Skip to content

Commit 73e43a2

Browse files
committed
back off to 10% on OOM
1 parent 352c9ba commit 73e43a2

File tree

1 file changed

+26
-19
lines changed
  • AndroidSDKCore/src/main/java/com/leanplum/internal

1 file changed

+26
-19
lines changed

AndroidSDKCore/src/main/java/com/leanplum/internal/Request.java

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -510,22 +510,25 @@ private RequestsWithEncoding getRequestsWithEncodedStringForErrors() {
510510
return requestsWithEncoding;
511511
}
512512

513-
private RequestsWithEncoding getRequestsWithEncodedStringStoredRequests() {
514-
List<Map<String, Object>> unsentRequests;
515-
List<Map<String, Object>> requestsToSend;
516-
String jsonEncodedRequestsToSend;
517-
518-
RequestsWithEncoding requestsWithEncoding = new RequestsWithEncoding();
519-
unsentRequests = getUnsentRequests();
520-
requestsToSend = removeIrrelevantBackgroundStartRequests(unsentRequests);
521-
jsonEncodedRequestsToSend = jsonEncodeUnsentRequests(unsentRequests);
522-
523-
524-
requestsWithEncoding.unsentRequests = unsentRequests;
525-
requestsWithEncoding.requestsToSend = requestsToSend;
526-
requestsWithEncoding.jsonEncodedString = jsonEncodedRequestsToSend;
527-
528-
return requestsWithEncoding;
513+
private RequestsWithEncoding getRequestsWithEncodedStringStoredRequests(double fraction) {
514+
try {
515+
List<Map<String, Object>> unsentRequests;
516+
List<Map<String, Object>> requestsToSend;
517+
String jsonEncodedRequestsToSend;
518+
RequestsWithEncoding requestsWithEncoding = new RequestsWithEncoding();
519+
520+
unsentRequests = getUnsentRequests(fraction);
521+
requestsToSend = removeIrrelevantBackgroundStartRequests(unsentRequests);
522+
jsonEncodedRequestsToSend = jsonEncodeUnsentRequests(unsentRequests);
523+
524+
requestsWithEncoding.unsentRequests = unsentRequests;
525+
requestsWithEncoding.requestsToSend = requestsToSend;
526+
requestsWithEncoding.jsonEncodedString = jsonEncodedRequestsToSend;
527+
528+
return requestsWithEncoding;
529+
} catch (OutOfMemoryError E) {
530+
return getRequestsWithEncodedStringStoredRequests(0.1 * fraction);
531+
}
529532
}
530533

531534
private RequestsWithEncoding getRequestsWithEncodedString() {
@@ -534,7 +537,7 @@ private RequestsWithEncoding getRequestsWithEncodedString() {
534537
if (localErrors.size() != 0) {
535538
requestsWithEncoding = getRequestsWithEncodedStringForErrors();
536539
} else {
537-
requestsWithEncoding = getRequestsWithEncodedStringStoredRequests()
540+
requestsWithEncoding = getRequestsWithEncodedStringStoredRequests(1.0);
538541
}
539542

540543
return requestsWithEncoding;
@@ -649,6 +652,10 @@ static void deleteSentRequests(int requestsCount) {
649652
}
650653

651654
private static List<Map<String, Object>> getUnsentRequests() {
655+
return getUnsentRequests(1.0);
656+
}
657+
658+
private static List<Map<String, Object>> getUnsentRequests(double fraction) {
652659
List<Map<String, Object>> requestData;
653660

654661
synchronized (Request.class) {
@@ -657,8 +664,8 @@ private static List<Map<String, Object>> getUnsentRequests() {
657664
SharedPreferences preferences = context.getSharedPreferences(
658665
LEANPLUM, Context.MODE_PRIVATE);
659666
SharedPreferences.Editor editor = preferences.edit();
660-
661-
requestData = LeanplumEventDataManager.getEvents(MAX_EVENTS_PER_API_CALL);
667+
int count = (int) (fraction * MAX_EVENTS_PER_API_CALL);
668+
requestData = LeanplumEventDataManager.getEvents(count);
662669
editor.remove(Constants.Defaults.UUID_KEY);
663670
SharedPreferencesUtil.commitChanges(editor);
664671
}

0 commit comments

Comments
 (0)