You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2016/02/09 08:23:39 UTC

bookkeeper git commit: BOOKKEEPER-890: Concurrent modification exception when removing listener in…

Repository: bookkeeper
Updated Branches:
  refs/heads/master 8729d12be -> 626b7e8bb


BOOKKEEPER-890: Concurrent modification exception when removing listener in…

… Bookkeeper ZK ledger manager

Author: Matteo Merli <mm...@apache.org>

Reviewers: Sijie Guo <si...@apache.org>

Closes #9 from merlimat/bk-890-concurrent-modification


Project: http://git-wip-us.apache.org/repos/asf/bookkeeper/repo
Commit: http://git-wip-us.apache.org/repos/asf/bookkeeper/commit/626b7e8b
Tree: http://git-wip-us.apache.org/repos/asf/bookkeeper/tree/626b7e8b
Diff: http://git-wip-us.apache.org/repos/asf/bookkeeper/diff/626b7e8b

Branch: refs/heads/master
Commit: 626b7e8bb0b84271df97cfbf0a1b157c6cfe5a18
Parents: 8729d12
Author: Matteo Merli <mm...@apache.org>
Authored: Mon Feb 8 23:23:34 2016 -0800
Committer: Sijie Guo <si...@apache.org>
Committed: Mon Feb 8 23:23:34 2016 -0800

----------------------------------------------------------------------
 .../bookkeeper/meta/AbstractZkLedgerManager.java     | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/bookkeeper/blob/626b7e8b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
----------------------------------------------------------------------
diff --git a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
index 6636506..1d7c591 100644
--- a/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
+++ b/bookkeeper-server/src/main/java/org/apache/bookkeeper/meta/AbstractZkLedgerManager.java
@@ -195,16 +195,19 @@ abstract class AbstractZkLedgerManager implements LedgerManager, Watcher {
             Set<LedgerMetadataListener> listenerSet = listeners.get(ledgerId);
             if (null != listenerSet) {
                 synchronized(listenerSet){
-                    LOG.debug("Removed ledger metadata listeners on ledger {} : {}",
-                            ledgerId, listenerSet);
-                    for(LedgerMetadataListener l : listenerSet) {
-                        unregisterLedgerMetadataListener(ledgerId, l);
+                    if (LOG.isDebugEnabled()) {
+                        LOG.debug("Removed ledger metadata listeners on ledger {} : {}",
+                                ledgerId, listenerSet);
+                    }
+                    for (LedgerMetadataListener l : listenerSet) {
                         l.onChanged( ledgerId, null );
                     }
+                    listeners.remove(ledgerId, listenerSet);
                 }
             } else {
-                LOG.debug("No ledger metadata listeners to remove from ledger {} after it's deleted.",
-                        ledgerId);
+                if (LOG.isDebugEnabled()) {
+                    LOG.debug("No ledger metadata listeners to remove from ledger {} after it's deleted.", ledgerId);
+                }
             }
             break;
         case NodeDataChanged: