[
https://issues.apache.org/jira/browse/HBASE-6318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13406138#comment-13406138
]
Jimmy Xiang commented on HBASE-6318:
------------------------------------
@Ted, I prefer to synchronized HLogSplitter.java:1330. Because we don't want
some other thread to put more logWriter to the map
while we are closing it down. With ConcurrentHashMap, we won't get that
exception any more. But there could be some leakage
since other threads are still adding more logWriter.
I looked into the problem and figured out what's going on. The worker got a
task and started to work on it. However, the task
was taken by someone else. So the task was preempted, and
SplitLogWorker.stopTask() was called. So HLogSplitter was interrupted.
In clean up the writers, some writer threads are still there, so the CME.
Another thought is how should we handle if t.join is interrupted?
{code}
try {
t.join();
} catch (InterruptedException ie) {
IOException iie = new InterruptedIOException();
iie.initCause(ie);
throw iie;
}
{code}
I think this part should be fine if we synchronize the loop of
HLogSplitter.java:1330.
> SplitLogWorker exited due to ConcurrentModificationException
> ------------------------------------------------------------
>
> Key: HBASE-6318
> URL: https://issues.apache.org/jira/browse/HBASE-6318
> Project: HBase
> Issue Type: Bug
> Components: regionserver
> Affects Versions: 0.96.0
> Reporter: Jimmy Xiang
> Attachments: 6318-suggest.txt
>
>
> In playing with 0.96 code on a live cluster, found this issue:
> 2012-07-03 12:13:32,572 ERROR
> org.apache.hadoop.hbase.regionserver.SplitLogWorker: unexpected error
> java.util.ConcurrentModificationException
> at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
> at java.util.TreeMap$ValueIterator.next(TreeMap.java:1145)
> at
> org.apache.hadoop.hbase.regionserver.wal.HLogSplitter$OutputSink.closeLogWriters(HLogSplitter.java:1330)
> at
> org.apache.hadoop.hbase.regionserver.wal.HLogSplitter$OutputSink.finishWritingAndClose(HLogSplitter.java:1221)
> at
> org.apache.hadoop.hbase.regionserver.wal.HLogSplitter.splitLogFileToTemp(HLogSplitter.java:441)
> at
> org.apache.hadoop.hbase.regionserver.wal.HLogSplitter.splitLogFileToTemp(HLogSplitter.java:369)
> at
> org.apache.hadoop.hbase.regionserver.SplitLogWorker$1.exec(SplitLogWorker.java:113)
> at
> org.apache.hadoop.hbase.regionserver.SplitLogWorker.grabTask(SplitLogWorker.java:276)
> at
> org.apache.hadoop.hbase.regionserver.SplitLogWorker.taskLoop(SplitLogWorker.java:197)
> at
> org.apache.hadoop.hbase.regionserver.SplitLogWorker.run(SplitLogWorker.java:164)
> at java.lang.Thread.run(Thread.java:662)
> 2012-07-03 12:13:32,575 INFO
> org.apache.hadoop.hbase.regionserver.SplitLogWorker: SplitLogWorker
> ****.cloudera.com,57020,1341335300238 exiting
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira