You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by GitBox <gi...@apache.org> on 2022/03/09 14:34:10 UTC

[GitHub] [accumulo] dlmarion commented on a change in pull request #2467: Added mechanism to cancel FaTE operations from Shell with Manager up

dlmarion commented on a change in pull request #2467:
URL: https://github.com/apache/accumulo/pull/2467#discussion_r822711305



##########
File path: core/src/main/java/org/apache/accumulo/fate/Fate.java
##########
@@ -71,24 +83,51 @@ public void run() {
         try {
           tid = store.reserve();
           TStatus status = store.getStatus(tid);
+          if (status == FAILED) {
+            runnerLog.info(
+                "FATE txid " + Long.toHexString(tid) + " likely cancelled before it started.");
+            return;
+          }
           Repo<T> op = store.top(tid);
-          if (status == TStatus.FAILED_IN_PROGRESS) {
+          if (status == FAILED_IN_PROGRESS) {
             processFailed(tid, op);
           } else {
             Repo<T> prevOp = null;
+            boolean exceptionSeen = false;
             try {
-              deferTime = op.isReady(tid, environment);
-
-              if (deferTime == 0) {
-                prevOp = op;
-                if (status == TStatus.SUBMITTED) {
-                  store.setStatus(tid, TStatus.IN_PROGRESS);
+              try {
+                synchronized (RUNNING_TRANSACTIONS) {
+                  RUNNING_TRANSACTIONS.put(tid, Thread.currentThread());
                 }
-                op = op.call(tid, environment);
-              } else
-                continue;
-
+                deferTime = op.isReady(tid, environment);
+                if (deferTime == 0) {
+                  prevOp = op;
+                  if (status == SUBMITTED) {
+                    store.setStatus(tid, IN_PROGRESS);
+                  }
+                  op = op.call(tid, environment);
+                } else
+                  continue;
+              } catch (Exception e) {
+                exceptionSeen = true;
+                throw e;
+              } finally {
+                synchronized (RUNNING_TRANSACTIONS) {
+                  RUNNING_TRANSACTIONS.remove(tid);

Review comment:
       This is OBE as I modified the code in 7b7d1b7 to only cancel new or submitted transactions.




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscribe@accumulo.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org