Kaynağa Gözat

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 yıl önce
ebeveyn
işleme
2ae181498d

+ 3 - 0
CHANGES.txt

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

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

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