Github user paul-rogers commented on a diff in the pull request:
https://github.com/apache/drill/pull/574#discussion_r77917007
--- Diff:
exec/java-exec/src/main/java/org/apache/drill/exec/coord/zk/ZookeeperClient.java
---
@@ -179,6 +220,22 @@ public void create(final String path) {
* @param data data to store
*/
public void put(final String path, final byte[] data) {
+ put(path, data, null);
+ }
+
+ /**
+ * Puts the given byte sequence into the given path.
+ *
+ * If path does not exists, this call creates it.
+ *
+ * If version holder is not null, passes given version for comparison.
+ * Throws {@link VersionMismatchException} if versions mismatch was
detected.
--- End diff --
Perhaps explain this a bit more. One way to do this is to point to the
ZooKeeper docs:
https://zookeeper.apache.org/doc/r3.2.2/zookeeperProgrammers.html#sc_zkDataModel_znodes
Explain how we use the version number to ensure we write only the version
we read.
Then, when using this in the UDF registration stuff, explain how we use
that model to ensure consistency. I didn't see a try/fail/retry loop when
registering udfs, but perhaps I missed it. Using this ZK mechanism, seems we
would read & write until we get a conflict-free write. On each read, we'd
recheck that our new udf is still unique. Is this what we do?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---