[
https://issues.apache.org/jira/browse/HBASE-1121?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666707#action_12666707
]
Jim Kellerman commented on HBASE-1121:
--------------------------------------
Summary of changes:
hbase-default.xml:
- change default HLog block size from 64MB to 1MB
- remove hbase.regionserver.safemode.period - not in any way related to actual
cluster safe mode. Now HRegionServer gets safe mode status from master.
src/test/hbase-site.xml:
- disable safe mode for regression tests. Necessary for them to run successfully
src/test/TestSerialization:
- add missing @Override annotations
- since some statics have been moved out of HLog, use constructor to create
HMsg objects
HRegionServer:
- move some statics from HLog to here because that is the only place they are
used
- rename SafeModeThread to CompactionLimitThread because that it what it was
really doing.
- CompactionLimitThread now waits for the cluster to exit safe mode rather than
waiting an arbitrary period of time
- if in safe mode, look at HMsg from master to determine if safe mode is done
HLog:
- Change default block size from 64MB to 1MB
- Remove statics used only by a single class
- Add new constructors so that Master can tell region server if safe mode is
still in effect
ServerManager:
- Move some of the HLog statics here.
- use new HLog constructors to tell region server if safe mode is still in
effect
- only cache root region location during safe mode. Once we exit safe mode we
unset it so that HConnectionManager will recalibrate if the root region
location changes.
ProcessRegionOpen, ProcessRegionClose
- metaRegion is now variable and these classes need to call their parent class
to determine the location of the meta region they need. Previously, if the meta
region moved, these classes would not recalibrate.
RegionManager:
- use new HMsg constructors to tell region servers whether we are in safe mode
or not.
- once we exit safe mode, we unset the root region location in
HConnectionManager so that it will recalibrate if the root region moves.
ProcessRegionStatusChange:
- parent class of ProcessRegionOpen and ProcessRegionClose
- implements getMetaRegion which provides for reassignment of meta regions from
one server to another
HConnectionManager:
- do not cache root region location. If recalibrating, ask the master where the
root region is.
HMsg:
- added private boolean safeMode (settable only by master)
- Move static declarations to modules that use them
- Add new constructors so master can inform region servers of safe mode status
- add new accessor method (isInSafeMode()) so region servers can determine if
safe mode is still in effect
> Cluster confused about where -ROOT- is
> --------------------------------------
>
> Key: HBASE-1121
> URL: https://issues.apache.org/jira/browse/HBASE-1121
> Project: Hadoop HBase
> Issue Type: Bug
> Environment: TRUNK trying to do big upload
> Reporter: stack
> Assignee: Jim Kellerman
> Attachments: 1121.patch, 1121.patch
>
>
> Each node in cluster is doing below:
> {code}
> 2009-01-11 20:52:22,739 [regionserver/0:0:0:0:0:0:0:0:60020.compactor] DEBUG
> org.apache.hadoop.hbase.client.HConnectionManager$TableServers: Attempt 0 of
> 10 failed with <org.apache.hadoop.hbase.NotServingRegionException:
> org.apache.hadoop.hbase.NotServingRegionException: -ROOT-,,0
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.getRegion(HRegionServer.java:2064)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.getClosestRowBefore(HRegionServer.java:1545)
> at sun.reflect.GeneratedMethodAccessor17.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:632)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:894)
> >. Retrying after sleep of 20002009-01-11 20:52:22,742
> >[regionserver/0:0:0:0:0:0:0:0:60020.compactor] DEBUG
> >org.apache.hadoop.hbase.client.HConnectionManager$TableServers: Found ROOT
> >REGION => {NAME => '-ROOT-,,0', STARTKEY => '', ENDKEY => '', ENCODED =>
> >70236052, TABLE => {{NAME => '-ROOT-', IS_ROOT => 'true', IS_META => 'true',
> >FAMILIES => [{NAME => 'info', BLOOMFILTER => 'false', COMPRESSION => 'NONE',
> >VERSIONS => '10', LENGTH => '2147483647', TTL => '-1', IN_MEMORY => 'false',
> >BLOCKCACHE => 'true'}], INDEXES => []}}2009-01-11 20:52:24,759
> >[regionserver/0:0:0:0:0:0:0:0:60020.compactor] DEBUG
> >org.apache.hadoop.hbase.client.HConnectionManager$TableServers: Attempt 1 of
> >10 failed with <org.apache.hadoop.hbase.NotServingRegionException:
> >org.apache.hadoop.hbase.NotServingRegionException: -ROOT-,,0
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.getRegion(HRegionServer.java:2064)
> at
> org.apache.hadoop.hbase.regionserver.HRegionServer.getClosestRowBefore(HRegionServer.java:1545)
> at sun.reflect.GeneratedMethodAccessor17.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:632)
> at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:894)
> {code}
> I tried to close the root region and tripped over hbase-1120.
> So I killed the regionserver hosting -ROOT- but weirdly had no effect as
> though the regionservers' internal cache of -ROOT- location cannot be
> changed.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.