This is an automated email from the ASF dual-hosted git repository.

kturner pushed a commit to branch 2.1
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/2.1 by this push:
     new 767a68ada5 fixes exception for canceled scan task (#5093)
767a68ada5 is described below

commit 767a68ada50131317e3420dc14780505c523789f
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Fri Nov 22 13:58:24 2024 -0500

    fixes exception for canceled scan task (#5093)
    
    An exception was happening when a scan task was canceled before it ever
    ran.  This was caused by transitionFromRunning() executing when
    transitoinToRunning() had never executed.  When this happened a
    precondition check that the scanThread was non-null would fail.  These
    changes only execute transitionFromRunning() when transitionToRunning()
    has executed.
---
 .../main/java/org/apache/accumulo/tserver/scan/LookupTask.java   | 9 +++++----
 .../java/org/apache/accumulo/tserver/scan/NextBatchTask.java     | 9 +++++----
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
index 351946bb8c..8eb15ea6bb 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
@@ -64,15 +64,16 @@ public class LookupTask extends ScanTask<MultiScanResult> {
     MultiScanSession session = (MultiScanSession) server.getSession(scanID);
     String oldThreadName = Thread.currentThread().getName();
 
+    if (!transitionToRunning()) {
+      return;
+    }
+    // Do not add any code here. Need to ensure that transitionFromRunning() 
runs in the finally
+    // block when transitionToRunning() returns true.
     try {
       if (isCancelled() || session == null) {
         return;
       }
 
-      if (!transitionToRunning()) {
-        return;
-      }
-
       TableConfiguration acuTableConf = 
server.getTableConfiguration(session.threadPoolExtent);
       long maxResultsSize = 
acuTableConf.getAsBytes(Property.TABLE_SCAN_MAXMEM);
 
diff --git 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
index 9d601f4342..96251bd59b 100644
--- 
a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
+++ 
b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
@@ -54,15 +54,16 @@ public class NextBatchTask extends ScanTask<ScanBatch> {
     final SingleScanSession scanSession = (SingleScanSession) 
server.getSession(scanID);
     String oldThreadName = Thread.currentThread().getName();
 
+    if (!transitionToRunning()) {
+      return;
+    }
+    // Do not add any code here. Need to ensure that transitionFromRunning() 
runs in the finally
+    // block when transitionToRunning() returns true.
     try {
       if (isCancelled() || scanSession == null) {
         return;
       }
 
-      if (!transitionToRunning()) {
-        return;
-      }
-
       Thread.currentThread()
           .setName("User: " + scanSession.getUser() + " Start: " + 
scanSession.startTime
               + " Client: " + scanSession.client + " Tablet: " + 
scanSession.extent);

Reply via email to