TODOs: Tweak timings (Retry and Spec Watch)
The Spec Watch polling will occur every 1000ms now.
We also will have join retry up to 30x with a minimum of 1000ms
between the start of each join attempt. (From 15x with 2000ms between
the end and start)
Change-Id: Ib23b1f6be196a5ac967f85ab7e516faf094210c0
diff --git a/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbaseMain.java b/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbaseMain.java
index c70c92c..a8fa248 100644
--- a/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbaseMain.java
+++ b/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbaseMain.java
@@ -46,8 +46,8 @@
private static final String
TAG = SyncbaseMain.class.getSimpleName();
- private static final int DEFAULT_MAX_JOIN_ATTEMPTS = 15;
- private static final long RETRY_DELAY = 2000;
+ private static final int DEFAULT_MAX_JOIN_ATTEMPTS = 30;
+ private static final long MIN_RETRY_DELAY = 1000;
private final IdGenerator mIdGenerator = new IdGenerator(IdAlphabets.COLLECTION_ID, true);
private final Map<String, MainListTracker> mTaskTrackers = new HashMap<>();
@@ -157,7 +157,7 @@
return joinListSyncgroup(listId);
}
// Note: This can be easily converted to exponential backoff.
- final long delay = RETRY_DELAY;
+ final long startTime = System.currentTimeMillis();
return Futures.catchingAsync(
joinListSyncgroup(listId),
SyncgroupJoinFailedException.class,
@@ -165,6 +165,9 @@
public ListenableFuture<SyncgroupSpec> apply(@Nullable
SyncgroupJoinFailedException
input) {
+ long failTime = System.currentTimeMillis();
+ long delay = Math.max(0, MIN_RETRY_DELAY + startTime - failTime);
+
Log.d(TAG, "Join failed. Sleeping " + debugString + " with delay " + delay);
return sExecutor.schedule(new Callable<SyncgroupSpec>() {
diff --git a/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java b/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java
index 1777dc0..2b6110d 100644
--- a/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java
+++ b/app/src/syncbase/java/io/v/todos/persistence/syncbase/SyncbasePersistence.java
@@ -104,7 +104,7 @@
protected static final long
SHORT_TIMEOUT = 2500,
MEMBER_TIMER_DELAY = 100,
- MEMBER_TIMER_PERIOD = 5000;
+ MEMBER_TIMER_PERIOD = 1000;
public static final String
USER_COLLECTION_NAME = "userdata",
MOUNTPOINT = "/ns.dev.v.io:8101/tmp/todos/users/",