[ https://issues.apache.org/jira/browse/HBASE-7138?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Davey Yan updated HBASE-7138: ----------------------------- Status: Patch Available (was: Open) > RegionSplitter's rollingSplit terminated with "/ by zero", and the > _balancedSplit file was not deleted properly > --------------------------------------------------------------------------------------------------------------- > > Key: HBASE-7138 > URL: https://issues.apache.org/jira/browse/HBASE-7138 > Project: HBase > Issue Type: Bug > Components: util > Affects Versions: 0.94.1 > Environment: Ubuntu Server 10.04, Hadoop 1.0.3 > Reporter: Davey Yan > Priority: Minor > Attachments: RegionSplitter_HBASE-7138-0.94.patch, > RegionSplitter_HBASE-7138.patch > > > The 'splitCount' in this line is zero in some scenario, then throw > ArithmeticException: / by zero, and the '_balancedSplit' file was not deleted: > {code:java} > LOG.debug("Avg Time / Split = " > + org.apache.hadoop.util.StringUtils.formatTime(tDiff / > splitCount)); > {code} > Steps to reproduce: > {code} > shell> create 'test2', 'i' > shell> for i in 'a'..'z' do for j in 'a'..'z' do put 'test2', "#{i}#{j}", > "i:#{j}", "#{j}" end end > {code} > {noformat} > $ bin/hbase org.apache.hadoop.hbase.util.RegionSplitter -r -o 2 test2 > HexStringSplit > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:zookeeper.version=3.4.3-1240972, built on 02/06/2012 10:48 GMT > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:host.name=dev-vm0 > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.version=1.6.0_29 > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.vendor=Sun Microsystems Inc. > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.home=/usr/lib/jvm/jdk1.6.0_29/jre > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.class.path=/opt/hbase/bin/../conf:/usr/lib/jvm/default-java/lib/tools.jar:/opt/hbase/bin/..:/opt/hbase/bin/../hbase-0.94.1.jar:/opt/hbase/bin/../hbase-0.94.1-tests.jar:/opt/hbase/bin/../lib/activation-1.1.jar:/opt/hbase/bin/../lib/asm-3.1.jar:/opt/hbase/bin/../lib/avro-1.5.3.jar:/opt/hbase/bin/../lib/avro-ipc-1.5.3.jar:/opt/hbase/bin/../lib/commons-beanutils-1.7.0.jar:/opt/hbase/bin/../lib/commons-beanutils-core-1.8.0.jar:/opt/hbase/bin/../lib/commons-cli-1.2.jar:/opt/hbase/bin/../lib/commons-codec-1.4.jar:/opt/hbase/bin/../lib/commons-collections-3.2.1.jar:/opt/hbase/bin/../lib/commons-configuration-1.6.jar:/opt/hbase/bin/../lib/commons-digester-1.8.jar:/opt/hbase/bin/../lib/commons-el-1.0.jar:/opt/hbase/bin/../lib/commons-httpclient-3.1.jar:/opt/hbase/bin/../lib/commons-io-2.1.jar:/opt/hbase/bin/../lib/commons-lang-2.5.jar:/opt/hbase/bin/../lib/commons-logging-1.1.1.jar:/opt/hbase/bin/../lib/commons-math-2.1.jar:/opt/hbase/bin/../lib/commons-net-1.4.1.jar:/opt/hbase/bin/../lib/core-3.1.1.jar:/opt/hbase/bin/../lib/guava-11.0.2.jar:/opt/hbase/bin/../lib/hadoop-core-1.0.3.jar:/opt/hbase/bin/../lib/high-scale-lib-1.1.1.jar:/opt/hbase/bin/../lib/httpclient-4.1.2.jar:/opt/hbase/bin/../lib/httpcore-4.1.3.jar:/opt/hbase/bin/../lib/jackson-core-asl-1.8.8.jar:/opt/hbase/bin/../lib/jackson-jaxrs-1.8.8.jar:/opt/hbase/bin/../lib/jackson-mapper-asl-1.8.8.jar:/opt/hbase/bin/../lib/jackson-xc-1.8.8.jar:/opt/hbase/bin/../lib/jamon-runtime-2.3.1.jar:/opt/hbase/bin/../lib/jasper-compiler-5.5.23.jar:/opt/hbase/bin/../lib/jasper-runtime-5.5.23.jar:/opt/hbase/bin/../lib/jaxb-api-2.1.jar:/opt/hbase/bin/../lib/jaxb-impl-2.2.3-1.jar:/opt/hbase/bin/../lib/jersey-core-1.8.jar:/opt/hbase/bin/../lib/jersey-json-1.8.jar:/opt/hbase/bin/../lib/jersey-server-1.8.jar:/opt/hbase/bin/../lib/jettison-1.1.jar:/opt/hbase/bin/../lib/jetty-6.1.26.jar:/opt/hbase/bin/../lib/jetty-util-6.1.26.jar:/opt/hbase/bin/../lib/jruby-complete-1.6.5.jar:/opt/hbase/bin/../lib/jsp-2.1-6.1.14.jar:/opt/hbase/bin/../lib/jsp-api-2.1-6.1.14.jar:/opt/hbase/bin/../lib/jsr305-1.3.9.jar:/opt/hbase/bin/../lib/junit-4.10-HBASE-1.jar:/opt/hbase/bin/../lib/libthrift-0.8.0.jar:/opt/hbase/bin/../lib/log4j-1.2.16.jar:/opt/hbase/bin/../lib/metrics-core-2.1.2.jar:/opt/hbase/bin/../lib/netty-3.2.4.Final.jar:/opt/hbase/bin/../lib/protobuf-java-2.4.0a.jar:/opt/hbase/bin/../lib/servlet-api-2.5-6.1.14.jar:/opt/hbase/bin/../lib/slf4j-api-1.4.3.jar:/opt/hbase/bin/../lib/slf4j-log4j12-1.4.3.jar:/opt/hbase/bin/../lib/snappy-java-1.0.3.2.jar:/opt/hbase/bin/../lib/stax-api-1.0.1.jar:/opt/hbase/bin/../lib/velocity-1.7.jar:/opt/hbase/bin/../lib/xmlenc-0.52.jar:/opt/hbase/bin/../lib/zookeeper-3.4.3.jar:/opt/hbase/bin/../libextra/mybk-commons-cc.jar:/opt/hbase/bin/../libextra/hbase.jar:/opt/hbase/bin/../libextra/sfdcloud-hbase.jar: > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.library.path=/opt/hbase/bin/../lib/native/Linux-i386-32 > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.io.tmpdir=/tmp > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:java.compiler=<NA> > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client environment:os.name=Linux > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client environment:os.arch=i386 > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:os.version=2.6.32-33-generic > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client environment:user.name=pcer > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:user.home=/home/pcer > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Client > environment:user.dir=/opt/hbase-0.94.1 > 12/11/08 19:20:40 INFO zookeeper.ZooKeeper: Initiating client connection, > connectString=dev-vm0:2181 sessionTimeout=60000 watcher=hconnection > 12/11/08 19:20:40 INFO zookeeper.ClientCnxn: Opening socket connection to > server /172.16.20.140:2181 > 12/11/08 19:20:40 INFO zookeeper.RecoverableZooKeeper: The identifier of this > process is 28728@dev-vm0 > 12/11/08 19:20:40 WARN client.ZooKeeperSaslClient: SecurityException: > java.lang.SecurityException: Unable to locate a login configuration occurred > when trying to find JAAS configuration. > 12/11/08 19:20:40 INFO client.ZooKeeperSaslClient: Client will not > SASL-authenticate because the default JAAS configuration section 'Client' > could not be found. If you are not using SASL, you may ignore this. On the > other hand, if you expected SASL to work, please fix your JAAS configuration. > 12/11/08 19:20:40 INFO zookeeper.ClientCnxn: Socket connection established to > dev-vm0/172.16.20.140:2181, initiating session > 12/11/08 19:20:40 INFO zookeeper.ClientCnxn: Session establishment complete > on server dev-vm0/172.16.20.140:2181, sessionid = 0x13ad3e9ba700150, > negotiated timeout = 40000 > 12/11/08 19:20:40 DEBUG client.HConnectionManager$HConnectionImplementation: > Looked up root region location, > connection=org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a; > serverName=dev-vm0,46871,1352175042380 > 12/11/08 19:20:41 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for .META.,,1.1028785192 is dev-vm0:46871 > 12/11/08 19:20:41 DEBUG client.MetaScanner: Scanning .META. starting at > row=test2,,00000000000000 for max=10 rows using > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:20:41 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for test2,,1352373607304.8341524d6c8b105b1722961ebda3a048. is > dev-vm0:46871 > 12/11/08 19:20:41 DEBUG util.RegionSplitter: No _balancedSplit file. > Calculating splits... > 12/11/08 19:20:41 DEBUG client.MetaScanner: Scanning .META. starting at > row=test2,,00000000000000 for max=2147483647 rows using > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Table test2 has 1 regions that > will be split. > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Will Split [00000000 , ffffffff) > at 7fffffff > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Bucketing regions by > regionserver... > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Done with bucketing. Split time! > 12/11/08 19:20:41 DEBUG util.RegionSplitter: 1 RS have regions to splt. > 12/11/08 19:20:41 DEBUG client.MetaScanner: Scanning .META. starting at > row=test2,,00000000000000 for max=2147483647 rows using > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Finding a region on dev-vm0:46871 > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Splitting at 7fffffff > 12/11/08 19:20:41 INFO zookeeper.ZooKeeper: Initiating client connection, > connectString=dev-vm0:2181 sessionTimeout=60000 > watcher=catalogtracker-on-org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:20:41 INFO zookeeper.ClientCnxn: Opening socket connection to > server /172.16.20.140:2181 > 12/11/08 19:20:41 WARN client.ZooKeeperSaslClient: SecurityException: > java.lang.SecurityException: Unable to locate a login configuration occurred > when trying to find JAAS configuration. > 12/11/08 19:20:41 INFO client.ZooKeeperSaslClient: Client will not > SASL-authenticate because the default JAAS configuration section 'Client' > could not be found. If you are not using SASL, you may ignore this. On the > other hand, if you expected SASL to work, please fix your JAAS configuration. > 12/11/08 19:20:41 INFO zookeeper.ClientCnxn: Socket connection established to > dev-vm0/172.16.20.140:2181, initiating session > 12/11/08 19:20:41 INFO zookeeper.ClientCnxn: Session establishment complete > on server dev-vm0/172.16.20.140:2181, sessionid = 0x13ad3e9ba700151, > negotiated timeout = 40000 > 12/11/08 19:20:41 INFO zookeeper.RecoverableZooKeeper: The identifier of this > process is 28728@dev-vm0 > 12/11/08 19:20:41 DEBUG catalog.CatalogTracker: Starting catalog tracker > org.apache.hadoop.hbase.catalog.CatalogTracker@29c58e > 12/11/08 19:20:41 DEBUG client.ClientScanner: Creating scanner over .META. > starting at key 'test2,,' > 12/11/08 19:20:41 DEBUG client.ClientScanner: Advancing internal scanner to > startKey at 'test2,,' > 12/11/08 19:20:41 DEBUG client.ClientScanner: Creating scanner over .META. > starting at key 'test2,,' > 12/11/08 19:20:41 DEBUG client.ClientScanner: Advancing internal scanner to > startKey at 'test2,,' > 12/11/08 19:20:41 DEBUG client.ClientScanner: Finished with scanning at {NAME > => '.META.,,1', STARTKEY => '', ENDKEY => '', ENCODED => 1028785192,} > 12/11/08 19:20:41 DEBUG catalog.CatalogTracker: Stopping catalog tracker > org.apache.hadoop.hbase.catalog.CatalogTracker@29c58e > 12/11/08 19:20:41 INFO zookeeper.ZooKeeper: Session: 0x13ad3e9ba700151 closed > 12/11/08 19:20:41 INFO zookeeper.ClientCnxn: EventThread shut down > 12/11/08 19:20:41 DEBUG client.HConnectionManager$HConnectionImplementation: > Looked up root region location, > connection=org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a; > serverName=dev-vm0,46871,1352175042380 > 12/11/08 19:20:41 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for .META.,,1.1028785192 is dev-vm0:46871 > 12/11/08 19:20:41 DEBUG client.MetaScanner: Scanning .META. starting at > row=test2,,00000000000000 for max=10 rows using > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:20:41 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for test2,,1352373607304.8341524d6c8b105b1722961ebda3a048. is > dev-vm0:46871 > 12/11/08 19:20:41 DEBUG util.RegionSplitter: Split Scan: 0 finished / 1 split > wait / 0 reference wait > 12/11/08 19:21:11 DEBUG client.HConnectionManager$HConnectionImplementation: > Looked up root region location, > connection=org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a; > serverName=dev-vm0,46871,1352175042380 > 12/11/08 19:21:11 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for .META.,,1.1028785192 is dev-vm0:46871 > 12/11/08 19:21:11 DEBUG client.MetaScanner: Scanning .META. starting at > row=test2,7fffffff,00000000000000 for max=10 rows using > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:21:11 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for > test2,7fffffff,1352373641571.d56fbb146b77bbc87c294766fabcb3c4. is > dev-vm0:46871 > 12/11/08 19:21:11 DEBUG client.MetaScanner: Scanning .META. starting at > row=test2,,00000000000000 for max=10 rows using > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@ba5c7a > 12/11/08 19:21:11 DEBUG client.HConnectionManager$HConnectionImplementation: > Cached location for test2,,1352373641571.4e805892dd68d69ba02f72303973ee0e. is > dev-vm0:46871 > 12/11/08 19:21:12 DEBUG util.RegionSplitter: Split Scan: 1 finished / 0 split > wait / 0 reference wait > 12/11/08 19:21:12 DEBUG util.RegionSplitter: All regions have been > successfully split! > 12/11/08 19:21:12 DEBUG util.RegionSplitter: TOTAL TIME = 30sec > 12/11/08 19:21:12 DEBUG util.RegionSplitter: Splits = 0 > Exception in thread "main" java.lang.ArithmeticException: / by zero > at > org.apache.hadoop.hbase.util.RegionSplitter.rollingSplit(RegionSplitter.java:576) > at > org.apache.hadoop.hbase.util.RegionSplitter.main(RegionSplitter.java:349) > {noformat} > The attached patch was tested and worked well. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira