zookeeper-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [zookeeper] hanm commented on a change in pull request #632: [ZOOKEEPER-3150] Add tree digest check and verify data integrity when loading from disk
Date Sat, 27 Jul 2019 23:47:36 GMT
hanm commented on a change in pull request #632: [ZOOKEEPER-3150] Add tree digest check and
verify data integrity when loading from disk
URL: https://github.com/apache/zookeeper/pull/632#discussion_r307980271
 
 

 ##########
 File path: zookeeper-server/src/main/java/org/apache/zookeeper/server/util/AdHash.java
 ##########
 @@ -0,0 +1,84 @@
+/**
+ * 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.zookeeper.server.util;
+
+/**
+ * This incremental hash is used to keep track of the hash of
+ * the data tree to that we can quickly validate that things
+ * are in sync.
+ *
+ * See the excellent paper: A New Paradigm for collision-free hashing:
+ *   Incrementality at reduced cost,  M. Bellare and D. Micciancio
+ */
+public class AdHash {
+
+    /* we use 64 bits so that we can be fast an efficient */
+    private long hash;
+
+    /**
+     * Add new digest to the hash value maintained in this class.
+     *
+     * @param digest the value to add on
+     * @return the AdHash itself for chained operations
+     */
+    public AdHash addDigest(long digest) {
+        hash += digest;
 
 Review comment:
   My understanding of AdHash is it's a function of the result of the additions, then modulo
an integer. I only see we do addition this, without modulo. Is this intended? I can see if
we don't modulo, `hash` might get overflow pretty soon.

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services

Mime
View raw message