[ 
https://issues.apache.org/jira/browse/HBASE-1059?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12658428#action_12658428
 ] 

stack commented on HBASE-1059:
------------------------------

Here is what I committed:

{code}
durruti:trunk stack$ svn diff -r725828:726152 src
Index: src/java/org/apache/hadoop/hbase/regionserver/HStore.java
===================================================================
--- src/java/org/apache/hadoop/hbase/regionserver/HStore.java   (revision 
725828)
+++ src/java/org/apache/hadoop/hbase/regionserver/HStore.java   (revision 
726152)
@@ -122,8 +122,10 @@
   private final Path compactionDir;
   private final Integer compactLock = new Integer(0);
   private final int compactionThreshold;
+  
+  // All access must be synchronized.
   private final Set<ChangedReadersObserver> changedReaderObservers =
-    Collections.synchronizedSet(new HashSet<ChangedReadersObserver>());
+    new HashSet<ChangedReadersObserver>();
 
   /**
    * An HStore is a set of zero or more MapFiles, which stretch backwards over 
@@ -740,15 +742,19 @@
    * @param o Observer who wants to know about changes in set of Readers
    */
   void addChangedReaderObserver(ChangedReadersObserver o) {
-    this.changedReaderObservers.add(o);
+    synchronized(this.changedReaderObservers) {
+      this.changedReaderObservers.add(o);
+    }
   }
   
   /*
    * @param o Observer no longer interested in changes in set of Readers.
    */
   void deleteChangedReaderObserver(ChangedReadersObserver o) {
-    if (!this.changedReaderObservers.remove(o)) {
-      LOG.warn("Not in set" + o);
+    synchronized (this.changedReaderObservers) {
+      if (!this.changedReaderObservers.remove(o)) {
+        LOG.warn("Not in set" + o);
+      }
     }
   }
{code}

> ConcurrentModificationException in notifyChangedReadersObservers
> ----------------------------------------------------------------
>
>                 Key: HBASE-1059
>                 URL: https://issues.apache.org/jira/browse/HBASE-1059
>             Project: Hadoop HBase
>          Issue Type: Bug
>            Reporter: stack
>            Assignee: stack
>             Fix For: 0.19.0
>
>
> {code}
> org.apache.hadoop.hbase.DroppedSnapshotException: region: .META.,,1
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:876)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.flushcache(HRegion.java:772)
>         at 
> org.apache.hadoop.hbase.regionserver.MemcacheFlusher.flushRegion(MemcacheFlusher.java:220)
>         at 
> org.apache.hadoop.hbase.regionserver.MemcacheFlusher.run(MemcacheFlusher.java:130)
> Caused by: java.util.ConcurrentModificationException
>         at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
>         at java.util.HashMap$KeyIterator.next(HashMap.java:828)
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.notifyChangedReadersObservers(HStore.java:734)
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.updateReaders(HStore.java:722)
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.internalFlushCache(HStore.java:691)
>         at 
> org.apache.hadoop.hbase.regionserver.HStore.flushCache(HStore.java:627)
>         at 
> org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:863)
>         ... 3 more
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to