You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@helix.apache.org by zz...@apache.org on 2013/02/07 20:34:33 UTC
git commit: HELIX-44: ZkHelix property store is not checking the
validity of path
Updated Branches:
refs/heads/master 98b6c97ad -> e0fc35aaf
HELIX-44: ZkHelix property store is not checking the validity of path
Project: http://git-wip-us.apache.org/repos/asf/incubator-helix/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-helix/commit/e0fc35aa
Tree: http://git-wip-us.apache.org/repos/asf/incubator-helix/tree/e0fc35aa
Diff: http://git-wip-us.apache.org/repos/asf/incubator-helix/diff/e0fc35aa
Branch: refs/heads/master
Commit: e0fc35aaf8d457c9c2104bcfe0d9fed96192ec1c
Parents: 98b6c97
Author: zzhang <zz...@uci.edu>
Authored: Thu Feb 7 11:34:25 2013 -0800
Committer: zzhang <zz...@uci.edu>
Committed: Thu Feb 7 11:34:25 2013 -0800
----------------------------------------------------------------------
.../helix/manager/zk/ZkCacheBaseDataAccessor.java | 2 +
.../helix/store/zk/TestZkHelixPropertyStore.java | 21 +++++++++++++++
2 files changed, 23 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/e0fc35aa/helix-core/src/main/java/org/apache/helix/manager/zk/ZkCacheBaseDataAccessor.java
----------------------------------------------------------------------
diff --git a/helix-core/src/main/java/org/apache/helix/manager/zk/ZkCacheBaseDataAccessor.java b/helix-core/src/main/java/org/apache/helix/manager/zk/ZkCacheBaseDataAccessor.java
index 5543d39..9eb926d 100644
--- a/helix-core/src/main/java/org/apache/helix/manager/zk/ZkCacheBaseDataAccessor.java
+++ b/helix-core/src/main/java/org/apache/helix/manager/zk/ZkCacheBaseDataAccessor.java
@@ -160,6 +160,8 @@ public class ZkCacheBaseDataAccessor<T> implements HelixPropertyStore<T>
private String prependChroot(String clientPath)
{
+ PathUtils.validatePath(clientPath);
+
if (_chrootPath != null)
{
// handle clientPath = "/"
http://git-wip-us.apache.org/repos/asf/incubator-helix/blob/e0fc35aa/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
----------------------------------------------------------------------
diff --git a/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java b/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
index fc4032a..8be8c52 100644
--- a/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
+++ b/helix-core/src/test/java/org/apache/helix/store/zk/TestZkHelixPropertyStore.java
@@ -96,6 +96,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase
subRoot,
subscribedPaths);
+ // test set
setNodes(store, 'a', false);
for (int i = 0; i < 10; i++)
{
@@ -108,6 +109,7 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase
}
}
+ // test get from cache
long startT = System.currentTimeMillis();
for (int i = 0; i < 1000; i++)
{
@@ -122,6 +124,25 @@ public class TestZkHelixPropertyStore extends ZkUnitTestBase
store.stop();
System.out.println("END testSet() at " + new Date(System.currentTimeMillis()));
}
+
+ @Test
+ public void testSetInvalidPath()
+ {
+ String subRoot = _root + "/" + "setInvalidPath";
+ ZkHelixPropertyStore<ZNRecord> store =
+ new ZkHelixPropertyStore<ZNRecord>(new ZkBaseDataAccessor<ZNRecord>(_gZkClient),
+ subRoot,
+ null);
+ try {
+ store.set("abc/xyz", new ZNRecord("testInvalid"), AccessOption.PERSISTENT);
+ Assert.fail("Should throw illegal-argument-exception since path doesn't start with /");
+ } catch (IllegalArgumentException e) {
+ // e.printStackTrace();
+ // OK
+ } catch (Exception e) {
+ Assert.fail("Should not throw exceptions other than illegal-argument");
+ }
+ }
@Test
public void testLocalTriggeredCallback() throws Exception