Yuta HIGUCHI
Committed by Yuta Higuchi

DatabaseManager: workaround for larger ONOS cluster

- sleep before retrying if listTable failed due to non-Timeout error
- do not throw exception even if retry max reached

Change-Id: I5764894f0830c11b07d63aefbd0bbb10fe41af74
...@@ -66,6 +66,10 @@ import com.google.common.collect.ImmutableList; ...@@ -66,6 +66,10 @@ import com.google.common.collect.ImmutableList;
66 @Service 66 @Service
67 public class DatabaseManager implements DatabaseService, DatabaseAdminService { 67 public class DatabaseManager implements DatabaseService, DatabaseAdminService {
68 68
69 + private static final int RETRY_MS = 500;
70 +
71 + private static final int ACTIVATE_MAX_RETRIES = 100;
72 +
69 private final Logger log = getLogger(getClass()); 73 private final Logger log = getLogger(getClass());
70 74
71 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 75 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
...@@ -234,18 +238,23 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService { ...@@ -234,18 +238,23 @@ public class DatabaseManager implements DatabaseService, DatabaseAdminService {
234 } 238 }
235 } 239 }
236 240
237 - private void tryTableListing() { 241 + private void tryTableListing() throws InterruptedException {
238 int retries = 0; 242 int retries = 0;
239 do { 243 do {
240 try { 244 try {
241 listTables(); 245 listTables();
242 return; 246 return;
243 - } catch (DatabaseException e) { 247 + } catch (DatabaseException.Timeout e) {
244 - if (retries == 10) {
245 - log.error("Failed to listTables after multiple attempts. Giving up.", e);
246 - throw e;
247 - } else {
248 log.debug("Failed to listTables. Will retry...", e); 248 log.debug("Failed to listTables. Will retry...", e);
249 + } catch (DatabaseException e) {
250 + log.debug("Failed to listTables. Will retry later...", e);
251 + Thread.sleep(RETRY_MS);
252 + } finally {
253 + if (retries == ACTIVATE_MAX_RETRIES) {
254 + log.error("Failed to listTables after multiple attempts. Giving up.");
255 + // Exiting hoping things will be fixed by the time
256 + // others start using the service
257 + return;
249 } 258 }
250 } 259 }
251 retries++; 260 retries++;
......