You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "stack (JIRA)" <ji...@apache.org> on 2009/09/02 16:41:32 UTC

[jira] Commented: (HBASE-1810) ConcurrentModificationException in region assignment

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

stack commented on HBASE-1810:
------------------------------

hmm.... Looking at the regionsInTransistion set, I see that its synchronized sometimes but not always (I'm talking about before Mathias's patch is applied).  Mathias's patch would seem to make sense.... Let me check java src to ensure that same monitor is effected when you do synchronized(regionsInTransistion) as is used when you do Collections.synchronizedSortedMap get /put

> ConcurrentModificationException in region assignment
> ----------------------------------------------------
>
>                 Key: HBASE-1810
>                 URL: https://issues.apache.org/jira/browse/HBASE-1810
>             Project: Hadoop HBase
>          Issue Type: Bug
>    Affects Versions: 0.20.0
>            Reporter: Lars George
>            Assignee: Mathias Herberts
>             Fix For: 0.20.1
>
>         Attachments: HBASE-1810.patch
>
>
> {code}
> 2009-09-01 11:28:24,106 INFO org.apache.hadoop.ipc.HBaseServer: IPC Server handler 16 on 60000, call regionServerReport(address: 192.168.105.39:60020, startcode: 1251828463043, load: (requests=0, regions=21, usedHeap=135, maxHeap=4093), [Lorg.apache.hadoop.hbase.HMsg;@6556c280, [Lorg.apache.hadoop.hbase.HRegionInfo;@22fb957a) from 192.168.105.39:60281: error: java.io.IOException: java.util.ConcurrentModificationException
> java.io.IOException: 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.master.RegionManager.isMetaServer(RegionManager.java:837)
>         at org.apache.hadoop.hbase.master.RegionManager.regionsAwaitingAssignment(RegionManager.java:405)
>         at org.apache.hadoop.hbase.master.RegionManager.assignRegions(RegionManager.java:202)
>         at org.apache.hadoop.hbase.master.ServerManager.processMsgs(ServerManager.java:481)
>         at org.apache.hadoop.hbase.master.ServerManager.processRegionServerAllsWell(ServerManager.java:415)
>         at org.apache.hadoop.hbase.master.ServerManager.regionServerReport(ServerManager.java:324)
>         at org.apache.hadoop.hbase.master.HMaster.regionServerReport(HMaster.java:722)
>         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:650)
>         at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:915)
> {code}
> and 
> {code}
> 2009-09-01 11:28:25,713 INFO org.apache.hadoop.ipc.HBaseServer: IPC Server handler 23 on 60000, call regionServerReport(address: 192.168.105.37:60020, startcode: 1251828463132, load: (requests=0, regions=14, usedHeap=141, maxHeap=4093), [Lorg.apache.hadoop.hbase.HMsg;@68345260, [Lorg.apache.hadoop.hbase.HRegionInfo;@430c5212) from 192.168.105.37:35432: error: java.io.IOException: java.util.ConcurrentModificationException
> java.io.IOException: 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.master.RegionManager.regionsAwaitingAssignment(RegionManager.java:428)
>         at org.apache.hadoop.hbase.master.RegionManager.assignRegions(RegionManager.java:202)
>         at org.apache.hadoop.hbase.master.ServerManager.processMsgs(ServerManager.java:481)
>         at org.apache.hadoop.hbase.master.ServerManager.processRegionServerAllsWell(ServerManager.java:415)
>         at org.apache.hadoop.hbase.master.ServerManager.regionServerReport(ServerManager.java:324)
>         at org.apache.hadoop.hbase.master.HMaster.regionServerReport(HMaster.java:722)
>         at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:597)
>         at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:650)
>         at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:915)
> {code}
> As discussed with Mathias on IRC:
> <hbs> regionsInTransition is a synchronized map so accesses to it are synchronized but not looping over it
> <hbs> as stated in http://java.sun.com/j2se/1.5.0/docs/api/java/util/Collections.html#synchronizedMap%28java.util.Map%29
> <hbs> so there is a missing synchronized(regionsInTransition) wherever regionsInTransition is iterated over.

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