DatabaseService related fixes.

- Note: This patch does not fix the issue running as single node.

Change-Id: Iabfa548ca4e40e4ec5c9e76ae936300437e53d22
diff --git a/core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/DistributedLinkResourceStore.java b/core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/DistributedLinkResourceStore.java
index b1cc6a8..ab167be 100644
--- a/core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/DistributedLinkResourceStore.java
+++ b/core/store/dist/src/main/java/org/onlab/onos/store/resource/impl/DistributedLinkResourceStore.java
@@ -39,6 +39,7 @@
 import org.onlab.onos.store.service.BatchWriteRequest.Builder;
 import org.onlab.onos.store.service.BatchWriteResult;
 import org.onlab.onos.store.service.DatabaseAdminService;
+import org.onlab.onos.store.service.DatabaseException;
 import org.onlab.onos.store.service.DatabaseService;
 import org.onlab.onos.store.service.VersionedValue;
 import org.onlab.onos.store.service.WriteRequest;
@@ -108,7 +109,21 @@
 
         serializer = new KryoSerializer();
 
-        Set<String> tables = databaseAdminService.listTables();
+        Set<String> tables = null;
+        int retries = 0;
+        do {
+            try {
+                tables = databaseAdminService.listTables();
+            } catch (DatabaseException e) {
+                log.debug("DatabaseException", e);
+                retries++;
+                if (retries > 10) {
+                    log.error("Failed to list tables, moving on", e);
+                    tables = new HashSet<>();
+                }
+            }
+        } while (tables == null);
+
         if (!tables.contains(LINK_RESOURCE_ALLOCATIONS)) {
             databaseAdminService.createTable(LINK_RESOURCE_ALLOCATIONS);
         }
@@ -116,6 +131,7 @@
             databaseAdminService.createTable(INTENT_ALLOCATIONS);
         }
 
+
         log.info("Started");
     }