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

Reply via email to