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

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


The following commit(s) were added to refs/heads/master by this push:
     new 43626de  fix IT and suppress spurious errors on close (#905 follow up)
43626de is described below

commit 43626decef4577e1f38d281a94aa91eab4848852
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Sat Jan 26 17:33:43 2019 -0500

    fix IT and suppress spurious errors on close (#905 follow up)
---
 .../accumulo/core/clientImpl/ScannerIterator.java       | 10 ++++++++--
 .../accumulo/test/functional/SessionBlockVerifyIT.java  | 17 ++++++++---------
 2 files changed, 16 insertions(+), 11 deletions(-)

diff --git 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java
index de65065..e5bb6bc 100644
--- 
a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java
+++ 
b/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java
@@ -37,6 +37,7 @@ import org.apache.accumulo.core.data.Range;
 import org.apache.accumulo.core.data.Value;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.NamingThreadFactory;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Preconditions;
 
@@ -124,8 +125,13 @@ public class ScannerIterator implements 
Iterator<Entry<Key,Value>> {
     readaheadPool.execute(() -> {
       synchronized (scanState) {
         // this is synchronized so its mutually exclusive with readBatch()
-        closed = true;
-        ThriftScanner.close(scanState);
+        try {
+          closed = true;
+          ThriftScanner.close(scanState);
+        } catch (Exception e) {
+          LoggerFactory.getLogger(ScannerIterator.class)
+              .debug("Exception when closing scan session", e);
+        }
       }
     });
   }
diff --git 
a/test/src/main/java/org/apache/accumulo/test/functional/SessionBlockVerifyIT.java
 
b/test/src/main/java/org/apache/accumulo/test/functional/SessionBlockVerifyIT.java
index ce41366..300b794 100644
--- 
a/test/src/main/java/org/apache/accumulo/test/functional/SessionBlockVerifyIT.java
+++ 
b/test/src/main/java/org/apache/accumulo/test/functional/SessionBlockVerifyIT.java
@@ -109,12 +109,11 @@ public class SessionBlockVerifyIT extends 
ScanSessionTimeOutIT {
         SlowIterator.setSleepTime(setting, Long.MAX_VALUE);
         scanner.addScanIterator(setting);
 
-        final Iterator<Entry<Key,Value>> slow = scanner.iterator();
-
         final List<Future<Boolean>> callables = new ArrayList<>();
         final CountDownLatch latch = new CountDownLatch(10);
         for (int i = 0; i < 10; i++) {
           Future<Boolean> callable = service.submit(() -> {
+            Iterator<Entry<Key,Value>> slow = scanner.iterator();
             latch.countDown();
             while (slow.hasNext()) {
 
@@ -131,13 +130,13 @@ public class SessionBlockVerifyIT extends 
ScanSessionTimeOutIT {
 
         // let's add more for good measure.
         for (int i = 0; i < 2; i++) {
-          try (Scanner scanner2 = c.createScanner(tableName, new 
Authorizations())) {
-            scanner2.setRange(new Range(String.format("%08d", 0), 
String.format("%08d", 1000)));
-            scanner2.setBatchSize(1);
-            Iterator<Entry<Key,Value>> iter = scanner2.iterator();
-            // call super's verify mechanism
-            verify(iter, 0, 1000);
-          }
+          // do not close scanner, since all data is consumed it should close 
the sessions
+          Scanner scanner2 = c.createScanner(tableName, new Authorizations());
+          scanner2.setRange(new Range(String.format("%08d", 0), 
String.format("%08d", 1000)));
+          scanner2.setBatchSize(1);
+          Iterator<Entry<Key,Value>> iter = scanner2.iterator();
+          // call super's verify mechanism
+          verify(iter, 0, 1000);
         }
 
         int sessionsFound = 0;

Reply via email to