You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by th...@apache.org on 2014/12/24 19:44:03 UTC
svn commit: r1647828 - in /lucene/dev/trunk/solr: CHANGES.txt
core/src/java/org/apache/solr/cloud/ZkCLI.java
core/src/test/org/apache/solr/cloud/ZkCLITest.java
Author: thelabdude
Date: Wed Dec 24 18:44:02 2014
New Revision: 1647828
URL: http://svn.apache.org/r1647828
Log:
SOLR-6397: zkcli script put/putfile should allow overwriting an existing znode's data
Modified:
lucene/dev/trunk/solr/CHANGES.txt
lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkCLI.java
lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
Modified: lucene/dev/trunk/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/CHANGES.txt?rev=1647828&r1=1647827&r2=1647828&view=diff
==============================================================================
--- lucene/dev/trunk/solr/CHANGES.txt (original)
+++ lucene/dev/trunk/solr/CHANGES.txt Wed Dec 24 18:44:02 2014
@@ -357,6 +357,9 @@ Bug Fixes
* SOLR-6850: AutoAddReplicas makes a call to wait to see live replicas that times
out after 30 milliseconds instead of 30 seconds. (Varun Thacker via Mark Miller)
+* SOLR-6397: zkcli script put/putfile should allow overwriting an existing znode's data
+ (Timothy Potter)
+
Optimizations
----------------------
Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkCLI.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkCLI.java?rev=1647828&r1=1647827&r2=1647828&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkCLI.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/cloud/ZkCLI.java Wed Dec 24 18:44:02 2014
@@ -254,16 +254,27 @@ public class ZkCLI {
System.out.println("-" + PUT + " requires two args - the path to create and the data string");
System.exit(1);
}
- zkClient.create(arglist.get(0).toString(), arglist.get(1).toString().getBytes(StandardCharsets.UTF_8), CreateMode.PERSISTENT, true);
+ String path = arglist.get(0).toString();
+ if (zkClient.exists(path, true)) {
+ zkClient.setData(path, arglist.get(1).toString().getBytes(StandardCharsets.UTF_8), true);
+ } else {
+ zkClient.create(path, arglist.get(1).toString().getBytes(StandardCharsets.UTF_8), CreateMode.PERSISTENT, true);
+ }
} else if (line.getOptionValue(CMD).equals(PUT_FILE)) {
List arglist = line.getArgList();
if (arglist.size() != 2) {
System.out.println("-" + PUT_FILE + " requires two args - the path to create in ZK and the path to the local file");
System.exit(1);
}
+
+ String path = arglist.get(0).toString();
InputStream is = new FileInputStream(arglist.get(1).toString());
try {
- zkClient.create(arglist.get(0).toString(), IOUtils.toByteArray(is), CreateMode.PERSISTENT, true);
+ if (zkClient.exists(path, true)) {
+ zkClient.setData(path, IOUtils.toByteArray(is), true);
+ } else {
+ zkClient.create(path, IOUtils.toByteArray(is), CreateMode.PERSISTENT, true);
+ }
} finally {
IOUtils.closeQuietly(is);
}
Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java?rev=1647828&r1=1647827&r2=1647828&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/cloud/ZkCLITest.java Wed Dec 24 18:44:02 2014
@@ -144,6 +144,13 @@ public class ZkCLITest extends SolrTestC
zkClient.getData("/data.txt", null, null, true);
assertArrayEquals(zkClient.getData("/data.txt", null, null, true), data.getBytes(StandardCharsets.UTF_8));
+
+ // test re-put to existing
+ data = "my data deux";
+ args = new String[] {"-zkhost", zkServer.getZkAddress(), "-cmd",
+ "put", "/data.txt", data};
+ ZkCLI.main(args);
+ assertArrayEquals(zkClient.getData("/data.txt", null, null, true), data.getBytes(StandardCharsets.UTF_8));
}
@Test