zookeeper-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From GitBox <...@apache.org>
Subject [GitHub] [zookeeper] lvfangmin commented on a change in pull request #632: [ZOOKEEPER-3150] Add tree digest check and verify data integrity when loading from disk
Date Sun, 28 Jul 2019 17:59:46 GMT
lvfangmin 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_r308011603
 
 

 ##########
 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:
   It's skipped by intention, overflow is not a problem, as long as all servers will get the
same overflow number.

----------------------------------------------------------------
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