move retry from TestUtils to MetadataManager
diff --git a/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java b/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
index 7f1591d..7180df8 100644
--- a/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
+++ b/asterix-common/src/test/java/edu/uci/ics/asterix/test/aql/TestsUtils.java
@@ -283,17 +283,8 @@
// Provide custom retry handler is necessary
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(3, false));
- int statusCode = HttpStatus.SC_BAD_REQUEST;
- int retry = 0;
- while (retry++ < 3) {
- // Execute the method.
- statusCode = client.executeMethod(method);
- if (statusCode == HttpStatus.SC_OK) {
- break;
- }
- GlobalConfig.ASTERIX_LOGGER.log(Level.INFO, "Method failed: " + method.getStatusLine());
- Thread.sleep(1000);
- }
+ // Execute the method.
+ int statusCode = client.executeMethod(method);
// Check if the method was executed successfully.
if (statusCode != HttpStatus.SC_OK) {
diff --git a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataManager.java b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataManager.java
index 46159ba..924a89c 100644
--- a/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataManager.java
+++ b/asterix-metadata/src/main/java/edu/uci/ics/asterix/metadata/MetadataManager.java
@@ -90,13 +90,27 @@
}
@Override
- public void init() throws RemoteException {
+ public void init() throws RemoteException, MetadataException {
// Could be synchronized on any object. Arbitrarily chose proxy.
synchronized (proxy) {
if (metadataNode != null) {
return;
}
- metadataNode = proxy.getMetadataNode();
+ try {
+ int retry = 0;
+ int sleep = 64;
+ while (retry++ < 5) {
+ metadataNode = proxy.getMetadataNode();
+ if (metadataNode != null) {
+ break;
+ }
+ System.err.println("sleeping for " + sleep + " ms");
+ Thread.sleep(sleep);
+ sleep *= 4;
+ }
+ } catch (InterruptedException e) {
+ throw new MetadataException(e);
+ }
if (metadataNode == null) {
throw new Error("Failed to get the MetadataNode.\n" + "The MetadataNode was configured to run on NC: "
+ metadataProperties.getMetadataNodeName());