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