Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
## 25.4.4
* Improved disk size calculation in crash reports.
* Added "setRequestTimeoutDuration(requestTimeoutDuration)" init config method configure request timeout in seconds.

* Mitigated an issue displaying Content on API level 35 and above.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,10 @@ public void setUp() {
@Override public int getBOMDuration() {
return 60;
}

@Override public int getRequestTimeoutDurationMillis() {
return 30_000;
}
};

Countly.sharedInstance().setLoggingEnabled(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,6 @@ interface ConfigurationProvider {
int getBOMRequestAge();

int getBOMDuration();

int getRequestTimeoutDurationMillis();
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,6 @@ of this software and associated documentation files (the "Software"), to deal
* of this bug in dexmaker: https://code.google.com/p/dexmaker/issues/detail?id=34
*/
public class ConnectionProcessor implements Runnable {
private static final int CONNECT_TIMEOUT_IN_MILLISECONDS = 30_000;
// used in backoff mechanism to accept half of the CONNECT_TIMEOUT_IN_MILLISECONDS
private static final int READ_TIMEOUT_IN_MILLISECONDS = 30_000;

private static final String CRLF = "\r\n";
private static final String charset = "UTF-8";

Expand Down Expand Up @@ -148,8 +144,8 @@ private enum RequestResult {
pccTsConfigureConnection = UtilsTime.getNanoTime();
}

conn.setConnectTimeout(CONNECT_TIMEOUT_IN_MILLISECONDS);
conn.setReadTimeout(READ_TIMEOUT_IN_MILLISECONDS);
conn.setConnectTimeout(configProvider_.getRequestTimeoutDurationMillis());
conn.setReadTimeout(configProvider_.getRequestTimeoutDurationMillis());
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setRequestMethod("GET");
Expand Down Expand Up @@ -264,8 +260,8 @@ private enum RequestResult {
}

conn.setRequestMethod("HEAD");
conn.setConnectTimeout(CONNECT_TIMEOUT_IN_MILLISECONDS);
conn.setReadTimeout(READ_TIMEOUT_IN_MILLISECONDS);
conn.setConnectTimeout(configProvider_.getRequestTimeoutDurationMillis());
conn.setReadTimeout(configProvider_.getRequestTimeoutDurationMillis());
conn.setUseCaches(false);
conn.setDoInput(true);
conn.setDoOutput(false);
Expand Down
18 changes: 18 additions & 0 deletions sdk/src/main/java/ly/count/android/sdk/CountlyConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,7 @@ public class CountlyConfig {
String sdkBehaviorSettings;
boolean backOffMechanismEnabled = true;
boolean sdkBehaviorSettingsRequestsDisabled = false;
int requestTimeoutDuration = 30; // in seconds

/**
* THIS VARIABLE SHOULD NOT BE USED
Expand Down Expand Up @@ -1034,6 +1035,23 @@ public synchronized CountlyConfig disableSDKBehaviorSettingsUpdates() {
return this;
}

/**
* Set the request timeout duration in seconds
* Minimum value is "1" second
* Default value is "30" seconds
*
* @param requestTimeoutDuration The request timeout duration in seconds
* @return Returns the same config object for convenient linking
*/
public synchronized CountlyConfig setRequestTimeoutDuration(int requestTimeoutDuration) {
int tempRequestTimeoutDuration = requestTimeoutDuration;
if (tempRequestTimeoutDuration <= 0) {
tempRequestTimeoutDuration = 1;
}
this.requestTimeoutDuration = tempRequestTimeoutDuration;
return this;
}

/**
* APM configuration interface to be used with CountlyConfig
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -494,4 +494,8 @@ public boolean getTrackingEnabled() {
@Override public int getBOMDuration() {
return currentVBOMDuration;
}

@Override public int getRequestTimeoutDurationMillis() {
return _cly.config_.requestTimeoutDuration * 1000;
}
}
Loading