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/09/04 17:58:12 UTC

[1/3] git commit: ACCUMULO-3096 stopped retrying metadata updates on contraint violations

Repository: accumulo
Updated Branches:
  refs/heads/1.6.1-SNAPSHOT fee5ec4f0 -> 632c572b2


ACCUMULO-3096 stopped retrying metadata updates on contraint violations


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

Branch: refs/heads/1.6.1-SNAPSHOT
Commit: 0a5ceca5396cdc53ebda4b7e581f80d1c7917a72
Parents: b0c3ba8
Author: Keith Turner <kt...@apache.org>
Authored: Tue Sep 2 12:20:42 2014 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Thu Sep 4 11:50:39 2014 -0400

----------------------------------------------------------------------
 .../main/java/org/apache/accumulo/core/client/impl/Writer.java  | 5 +++++
 .../java/org/apache/accumulo/server/util/MetadataTable.java     | 2 ++
 2 files changed, 7 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/0a5ceca5/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
index b5c05aa..ff57f9d 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
@@ -95,6 +95,11 @@ public class Writer {
       } catch (NotServingTabletException e) {
         log.trace("Not serving tablet, server = " + tabLoc.tablet_location);
         TabletLocator.getInstance(instance, table).invalidateCache(tabLoc.tablet_extent);
+      } catch (ConstraintViolationException cve) {
+        log.error("error sending update to " + tabLoc.tablet_location + ": " + cve);
+        // probably do not need to invalidate cache, but it does not hurt
+        TabletLocator.getInstance(instance, table).invalidateCache(tabLoc.tablet_extent);
+        throw cve;
       } catch (TException e) {
         log.error("error sending update to " + tabLoc.tablet_location + ": " + e);
         TabletLocator.getInstance(instance, table).invalidateCache(tabLoc.tablet_extent);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/0a5ceca5/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java b/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java
index 477718d..3d281f6 100644
--- a/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java
+++ b/server/src/main/java/org/apache/accumulo/server/util/MetadataTable.java
@@ -131,6 +131,8 @@ public class MetadataTable extends org.apache.accumulo.core.util.MetadataTable {
         log.error(e, e);
       } catch (ConstraintViolationException e) {
         log.error(e, e);
+        // retrying when a CVE occurs is probably futile and can cause problems, see ACCUMULO-3096
+        throw new RuntimeException(e);
       } catch (TableNotFoundException e) {
         log.error(e, e);
       }


[3/3] git commit: ACCUMULO-3096 stopped retrying metadata updates on contraint violations

Posted by kt...@apache.org.
ACCUMULO-3096 stopped retrying metadata updates on contraint violations


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

Branch: refs/heads/1.6.1-SNAPSHOT
Commit: 632c572b211c6e152698436c4ef5759cad836e8b
Parents: 2698dde
Author: Keith Turner <kt...@apache.org>
Authored: Thu Sep 4 11:54:36 2014 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Thu Sep 4 11:54:36 2014 -0400

----------------------------------------------------------------------
 .../accumulo/core/client/impl/Writer.java       |  5 ++
 .../accumulo/server/util/MetadataTableUtil.java |  7 ++-
 .../accumulo/test/MetaConstraintRetryIT.java    | 58 ++++++++++++++++++++
 3 files changed, 69 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/632c572b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
index d6762e7..d58d1e4 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Writer.java
@@ -95,6 +95,11 @@ public class Writer {
       } catch (NotServingTabletException e) {
         log.trace("Not serving tablet, server = " + tabLoc.tablet_location);
         TabletLocator.getLocator(instance, table).invalidateCache(tabLoc.tablet_extent);
+      } catch (ConstraintViolationException cve) {
+        log.error("error sending update to " + tabLoc.tablet_location + ": " + cve);
+        // probably do not need to invalidate cache, but it does not hurt
+        TabletLocator.getLocator(instance, table).invalidateCache(tabLoc.tablet_extent);
+        throw cve;
       } catch (TException e) {
         log.error("error sending update to " + tabLoc.tablet_location + ": " + e);
         TabletLocator.getLocator(instance, table).invalidateCache(tabLoc.tablet_extent);

http://git-wip-us.apache.org/repos/asf/accumulo/blob/632c572b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
index 463ca57..f978439 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java
@@ -130,6 +130,10 @@ public class MetadataTableUtil {
 
   public static void update(Credentials credentials, ZooLock zooLock, Mutation m, KeyExtent extent) {
     Writer t = extent.isMeta() ? getRootTable(credentials) : getMetadataTable(credentials);
+    update(t, credentials, zooLock, m);
+  }
+
+  public static void update(Writer t, Credentials credentials, ZooLock zooLock, Mutation m) {
     if (zooLock != null)
       putLockID(zooLock, m);
     while (true) {
@@ -142,12 +146,13 @@ public class MetadataTableUtil {
         log.error(e, e);
       } catch (ConstraintViolationException e) {
         log.error(e, e);
+        // retrying when a CVE occurs is probably futile and can cause problems, see ACCUMULO-3096
+        throw new RuntimeException(e);
       } catch (TableNotFoundException e) {
         log.error(e, e);
       }
       UtilWaitThread.sleep(1000);
     }
-
   }
 
   public static void updateTabletFlushID(KeyExtent extent, long flushID, Credentials credentials, ZooLock zooLock) {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/632c572b/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java b/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
new file mode 100644
index 0000000..b5487ff
--- /dev/null
+++ b/test/src/test/java/org/apache/accumulo/test/MetaConstraintRetryIT.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.accumulo.test;
+
+import org.apache.accumulo.core.client.impl.Writer;
+import org.apache.accumulo.core.client.security.tokens.PasswordToken;
+import org.apache.accumulo.core.data.KeyExtent;
+import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.metadata.MetadataTable;
+import org.apache.accumulo.core.security.Credentials;
+import org.apache.accumulo.core.security.TablePermission;
+import org.apache.accumulo.core.tabletserver.thrift.ConstraintViolationException;
+import org.apache.accumulo.server.util.MetadataTableUtil;
+import org.apache.accumulo.test.functional.SimpleMacIT;
+import org.apache.hadoop.io.Text;
+import org.junit.Test;
+
+public class MetaConstraintRetryIT extends SimpleMacIT {
+  
+  //a test for ACCUMULO-3096
+  @Test(timeout = 30 * 1000, expected = ConstraintViolationException.class)
+  public void test() throws Exception {
+
+    getConnector().securityOperations().grantTablePermission("root", MetadataTable.NAME, TablePermission.WRITE);
+
+    Credentials credentials = new Credentials("root", new PasswordToken(ROOT_PASSWORD));
+    Writer w = new Writer(super.getConnector().getInstance(), credentials, MetadataTable.ID);
+    KeyExtent extent = new KeyExtent(new Text("5"), null, null);
+
+
+    Mutation m = new Mutation(extent.getMetadataEntry());
+    // unknown columns should cause contraint violation
+    m.put("badcolfam", "badcolqual", "3");
+
+    try {
+      MetadataTableUtil.update(w, credentials, null, m);
+    } catch (RuntimeException e) {
+      if (e.getCause().getClass().equals(ConstraintViolationException.class)) {
+        throw (ConstraintViolationException) e.getCause();
+      }
+    }
+  }
+}


[2/3] git commit: Merge branch '1.5.2-SNAPSHOT' into 1.6.1-SNAPSHOT

Posted by kt...@apache.org.
Merge branch '1.5.2-SNAPSHOT' into 1.6.1-SNAPSHOT


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

Branch: refs/heads/1.6.1-SNAPSHOT
Commit: 2698ddea24252dc0ab44a239286ea2cc9b675093
Parents: fee5ec4 0a5ceca
Author: Keith Turner <kt...@apache.org>
Authored: Thu Sep 4 11:54:20 2014 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Thu Sep 4 11:54:20 2014 -0400

----------------------------------------------------------------------

----------------------------------------------------------------------