You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2014/04/18 23:59:24 UTC

[1/2] git commit: ACCUMULO-2695 Fixed Conditional writer hang caused by tablet server fault

Repository: accumulo
Updated Branches:
  refs/heads/master ca2d4ebd9 -> 5abb916fc


ACCUMULO-2695 Fixed Conditional writer hang caused by tablet server fault

This change fixes issues that occurred when the conditional writer got an
exception when trying to connect to a tserver.  The conditonal writer could
throw an exception or loose mutations in this case.  In either case the client
would hang.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/0f3b4ca0
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/0f3b4ca0
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/0f3b4ca0

Branch: refs/heads/master
Commit: 0f3b4ca0a321eb7514fe4b5c6dcc9b71c09ff187
Parents: 1645b4f
Author: Keith Turner <kt...@apache.org>
Authored: Fri Apr 18 17:39:36 2014 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Fri Apr 18 17:39:36 2014 -0400

----------------------------------------------------------------------
 .../core/client/impl/ConditionalWriterImpl.java | 21 ++++++++------------
 .../test/randomwalk/conditional/Init.java       |  7 ++++++-
 2 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/0f3b4ca0/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java b/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
index 1ec6dee..01e4b95 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/ConditionalWriterImpl.java
@@ -559,15 +559,15 @@ class ConditionalWriterImpl implements ConditionalWriter {
     
     SessionID sessionId = null;
     
-    try {
-      
-      client = getClient(location);
-      
+    try {        
       Map<TKeyExtent,List<TConditionalMutation>> tmutations = new HashMap<TKeyExtent,List<TConditionalMutation>>();
       
       CompressedIterators compressedIters = new CompressedIterators();
       convertMutations(mutations, cmidToCm, cmid, tmutations, compressedIters);
       
+      //getClient() call must come after converMutations in case it throws a TException
+      client = getClient(location);
+      
       List<TCMResult> tresults = null;
       while (tresults == null) {
         try {
@@ -615,7 +615,8 @@ class ConditionalWriterImpl implements ConditionalWriter {
     } catch (Exception e) {
       queueException(location, cmidToCm, e);
     } finally {
-      unreserveSessionID(location);
+      if(sessionId != null)
+        unreserveSessionID(location);
       ThriftUtil.returnClient((TServiceClient) client);
     }
   }
@@ -637,7 +638,7 @@ class ConditionalWriterImpl implements ConditionalWriter {
       queueRetry(cmidToCm, location);
     } else {
       try {
-        invalidateSession(sessionId, location, mutations);
+        invalidateSession(sessionId, location);
         for (CMK cmk : cmidToCm.values())
           cmk.cm.queueResult(new Result(Status.UNKNOWN, cmk.cm, location));
       } catch (Exception e2) {
@@ -652,15 +653,9 @@ class ConditionalWriterImpl implements ConditionalWriter {
    * 
    * If a conditional mutation is taking a long time to process, then this method will wait for it to finish... unless this exceeds timeout.
    */
-  private void invalidateSession(SessionID sessionId, String location, TabletServerMutations<QCMutation> mutations) throws AccumuloException,
+  private void invalidateSession(SessionID sessionId, String location) throws AccumuloException,
       AccumuloSecurityException, TableNotFoundException {
     
-    ArrayList<QCMutation> mutList = new ArrayList<QCMutation>();
-    
-    for (List<QCMutation> tml : mutations.getMutations().values()) {
-      mutList.addAll(tml);
-    }
-    
     long sleepTime = 50;
     
     long startTime = System.currentTimeMillis();

http://git-wip-us.apache.org/repos/asf/accumulo/blob/0f3b4ca0/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
index bfad730..28f1fd8 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
@@ -66,7 +66,12 @@ public class Init extends Test {
         m.put(cf, "seq", Utils.getSeq(0));
 
         if (j % 1000 == 0 && j > 0) {
-          if (cw.write(m).getStatus() == Status.ACCEPTED)
+          Status status = cw.write(m).getStatus();
+          
+          while(status == Status.UNKNOWN)
+            status = cw.write(m).getStatus();
+          
+          if (status == Status.ACCEPTED)
             acceptedCount++;
           m = new ConditionalMutation(Utils.getBank(i));
         }


[2/2] git commit: Merge branch '1.6.0-SNAPSHOT'

Posted by kt...@apache.org.
Merge branch '1.6.0-SNAPSHOT'


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/5abb916f
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/5abb916f
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/5abb916f

Branch: refs/heads/master
Commit: 5abb916fc45a6608849d6bf2cb26cbf7b232b82d
Parents: ca2d4eb 0f3b4ca
Author: Keith Turner <kt...@apache.org>
Authored: Fri Apr 18 17:56:47 2014 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Fri Apr 18 17:56:47 2014 -0400

----------------------------------------------------------------------
 .../core/client/impl/ConditionalWriterImpl.java | 21 ++++++++------------
 .../test/randomwalk/conditional/Init.java       |  7 ++++++-
 2 files changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/5abb916f/test/src/main/java/org/apache/accumulo/test/randomwalk/conditional/Init.java
----------------------------------------------------------------------