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
Showing
1 changed file
with
15 additions
and
6 deletions
| ... | @@ -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++; | ... | ... |
-
Please register or login to post a comment