瀏覽代碼

ZOOKEEPER-783. committedLog in ZKDatabase is not properly synchronized (henry via mahadev)

git-svn-id: https://svn.apache.org/repos/asf/hadoop/zookeeper/trunk@979480 13f79535-47bb-0310-9956-ffa450edef68
Mahadev Konar 15 年之前
父節點
當前提交
2ae181498d
共有 2 個文件被更改,包括 9 次插入2 次删除
  1. 3 0
      CHANGES.txt
  2. 6 2
      src/java/main/org/apache/zookeeper/server/ZKDatabase.java

+ 3 - 0
CHANGES.txt

@@ -69,6 +69,9 @@ BUGFIXES:
   ZOOKEEPER-814. monitoring scripts are missing apache license headers
   (andrei savu via mahadev)
 
+  ZOOKEEPER-783. committedLog in ZKDatabase is not properly synchronized
+  (henry via mahadev) 
+
 IMPROVEMENTS:
   ZOOKEEPER-724. Improve junit test integration - log harness information 
   (phunt via mahadev)

+ 6 - 2
src/java/main/org/apache/zookeeper/server/ZKDatabase.java

@@ -104,7 +104,9 @@ public class ZKDatabase {
          */
         dataTree = new DataTree();
         sessionsWithTimeouts.clear();
-        committedLog.clear();
+        synchronized (committedLog) {
+            committedLog.clear();
+        }
         initialized = false;
     }
     
@@ -136,7 +138,9 @@ public class ZKDatabase {
     }
     
     public LinkedList<Proposal> getCommittedLog() {
-        return this.committedLog;
+        synchronized (this.committedLog) {
+            return new LinkedList<Proposal>(this.committedLog);
+        }
     }
     
     /**