abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2665

Change subject: WIP: improvements to active retry infrastructure
......................................................................

WIP: improvements to active retry infrastructure

Change-Id: I4246e2a276e1f80569a07630e182aab8f49dd115
---
M 
asterixdb/asterix-active/src/main/java/org/apache/asterix/active/CountRetryPolicy.java
M 
asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IRetryPolicy.java
M 
asterixdb/asterix-active/src/main/java/org/apache/asterix/active/InfiniteRetryPolicy.java
M 
asterixdb/asterix-active/src/main/java/org/apache/asterix/active/NoRetryPolicyFactory.java
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
M 
asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/LangRecordParseUtil.java
6 files changed, 10 insertions(+), 5 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/65/2665/1

diff --git 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/CountRetryPolicy.java
 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/CountRetryPolicy.java
index 6633810..b964430 100644
--- 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/CountRetryPolicy.java
+++ 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/CountRetryPolicy.java
@@ -28,7 +28,7 @@
     }
 
     @Override
-    public boolean retry() {
+    public boolean retry(Throwable failure) {
         if (attempted < count) {
             attempted++;
             return true;
diff --git 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IRetryPolicy.java
 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IRetryPolicy.java
index a010984..c7f2701 100644
--- 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IRetryPolicy.java
+++ 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/IRetryPolicy.java
@@ -23,5 +23,5 @@
     /**
      * @return true if one more attempt should be done
      */
-    boolean retry();
+    boolean retry(Throwable failure);
 }
diff --git 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/InfiniteRetryPolicy.java
 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/InfiniteRetryPolicy.java
index 074f8f4..fde67e6 100644
--- 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/InfiniteRetryPolicy.java
+++ 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/InfiniteRetryPolicy.java
@@ -27,7 +27,7 @@
     }
 
     @Override
-    public boolean retry() {
+    public boolean retry(Throwable failure) {
         synchronized (listener) {
             try {
                 listener.wait(5000); //NOSONAR this method is being called in 
a while loop
diff --git 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/NoRetryPolicyFactory.java
 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/NoRetryPolicyFactory.java
index 1596c17..a48283a 100644
--- 
a/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/NoRetryPolicyFactory.java
+++ 
b/asterixdb/asterix-active/src/main/java/org/apache/asterix/active/NoRetryPolicyFactory.java
@@ -20,7 +20,7 @@
 
 public class NoRetryPolicyFactory implements IRetryPolicyFactory {
     public static final NoRetryPolicyFactory INSTANCE = new 
NoRetryPolicyFactory();
-    private static final IRetryPolicy policy = () -> false;
+    private static final IRetryPolicy policy = failure -> false;
 
     private NoRetryPolicyFactory() {
     }
diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
index 2de8319..1f72856 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/active/RecoveryTask.java
@@ -93,6 +93,7 @@
                 synchronized (listener) {
                     if (!cancelRecovery) {
                         listener.setState(ActivityState.PERMANENTLY_FAILED);
+                        listener.setRunning(metadataProvider, false);
                     }
                 }
             } else {
@@ -112,7 +113,7 @@
             return null;
         }
         LOGGER.log(level, "calling the policy");
-        while (policy.retry()) {
+        while (policy.retry(failure)) {
             synchronized (listener) {
                 if (cancelRecovery) {
                     return null;
@@ -170,7 +171,9 @@
                     return null;
                 }
                 if (listener.getState() == ActivityState.TEMPORARILY_FAILED) {
+                    LOGGER.warn("Recovery for {} permanently failed", 
listener.getEntityId());
                     listener.setState(ActivityState.PERMANENTLY_FAILED);
+                    listener.setRunning(metadataProvider, false);
                 }
                 listener.notifyAll();
             }
diff --git 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/LangRecordParseUtil.java
 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/LangRecordParseUtil.java
index c4b23ef..8367fa0 100644
--- 
a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/LangRecordParseUtil.java
+++ 
b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/util/LangRecordParseUtil.java
@@ -213,6 +213,8 @@
                 return aOrderedListToString((AOrderedList) aObj);
             case STRING:
                 return ((AString) aObj).getStringValue();
+            case BOOLEAN:
+                return ((ABoolean) aObj).getBoolean().toString();
             default:
                 throw new AlgebricksException("value of type " + 
aObj.getType() + " is not supported yet");
         }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2665
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4246e2a276e1f80569a07630e182aab8f49dd115
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to