[NO ISSUE][ING] Active Job Recovery on Rebalance Required
- user model changes: no
- storage format changes: no
- interface changes: no
Details:
- Allow active job recovery to start on REBALANCE_REQUIRED
cluster state.
Change-Id: I1ec3bf3d61fdbfd64bc2384cb262943c2f45065e
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/8423
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Ali Alsuliman <ali.al.solaiman@gmail.com>
Reviewed-by: Michael Blow <mblow@apache.org>
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 c7951475..340c454 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
@@ -109,7 +109,7 @@
Exception failure;
do {
synchronized (listener) {
- while (!cancelRecovery && clusterStateManager.getState() != ClusterState.ACTIVE) {
+ while (!cancelRecovery && !canStartRecovery()) {
listener.wait();
}
if (cancelRecovery) {
@@ -198,4 +198,9 @@
protected void releasePostRecoveryLocks() {
metadataProvider.getLocks().reset();
}
+
+ private boolean canStartRecovery() {
+ return clusterStateManager.getState() == ClusterState.ACTIVE
+ || clusterStateManager.getState() == ClusterState.REBALANCE_REQUIRED;
+ }
}