[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-07-03 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: HBASE-8814_trunk_addendum.patch

In trunk also same problem could be there, but I have observed there test cases 
are running in lexicographical order. Attatching the addendum.


> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Affects Versions: 0.94.8
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_94.patch, HBASE-8814_94_v2.patch, 
> HBASE-8814_trunk_addendum.patch, HBASE-8814_trunk.patch, HBASE-8814_v2.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-07-03 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: HBASE-8814_94_v2.patch

Patch correcting test case failures.
{code}
admin.createTable(htd)
ZKAssign.blockUntilNoRIT(zkw)
{code}
Here we are waiting for no more znodes in RIT after creating table, but In 
testTableExistsIfTheSpecifiedTableRegionIsSplitParent testcase  there is one 
left out znode which is the reason for failure. I have corrected it.
Anyway removing ZKAssign.blockUntilNoRIT(zkw) because create table ensures no 
znodes in RIT and table state ENABLED.

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Affects Versions: 0.94.8
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_94.patch, HBASE-8814_94_v2.patch, 
> HBASE-8814_trunk.patch, HBASE-8814_v2.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-07-02 Thread stack (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

stack updated HBASE-8814:
-

  Resolution: Fixed
Hadoop Flags: Reviewed
  Status: Resolved  (was: Patch Available)

I just went ahead and committed to 0.94 too.  Thanks for the patch Rajesh.

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Affects Versions: 0.94.8
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_94.patch, HBASE-8814_trunk.patch, 
> HBASE-8814_v2.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-07-02 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Affects Version/s: 0.94.8

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Affects Versions: 0.94.8
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_94.patch, HBASE-8814_trunk.patch, 
> HBASE-8814_v2.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-07-02 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: HBASE-8814_94.patch

Patch for 94. Thanks Stack.

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_94.patch, HBASE-8814_trunk.patch, 
> HBASE-8814_v2.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-07-01 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: HBASE-8814_v2.patch

[~yuzhih...@gmail.com]
Thanks for review. Closing HTable in the latest patch. Admin is global and its 
getting closed in teardown. Changed test case to ensure some data and some 
empty storefiles before split.


> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_trunk.patch, HBASE-8814_v2.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-06-27 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Status: Patch Available  (was: Open)

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_trunk.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-06-27 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: HBASE-8667_trunk.patch

Patch for trunk. Please review.

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_trunk.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-06-27 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: HBASE-8814_trunk.patch

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_trunk.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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


[jira] [Updated] (HBASE-8814) Possible NPE in split if a region has empty store files.

2013-06-27 Thread rajeshbabu (JIRA)

 [ 
https://issues.apache.org/jira/browse/HBASE-8814?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

rajeshbabu updated HBASE-8814:
--

Attachment: (was: HBASE-8667_trunk.patch)

> Possible NPE in split if a region has empty store files.
> 
>
> Key: HBASE-8814
> URL: https://issues.apache.org/jira/browse/HBASE-8814
> Project: HBase
>  Issue Type: Bug
>  Components: regionserver
>Reporter: rajeshbabu
>Assignee: rajeshbabu
> Fix For: 0.98.0, 0.95.2, 0.94.10
>
> Attachments: HBASE-8814_trunk.patch
>
>
> {code}
> 2013-06-27 14:12:54,472 INFO  
> [RS:1;BLRY2R009039160:49833-splits-1372322572806] 
> regionserver.SplitRequest(92): Running rollback/cleanup of failed split of 
> testSplitShouldNotThrowNPEEvenARegionHasEmptySplitFiles,,1372322556662.276e00da1420119e2f91f3a4c4c41d78.;
>  java.util.concurrent.ExecutionException: java.lang.NullPointerException
> java.io.IOException: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:602)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.createDaughters(SplitTransaction.java:297)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.execute(SplitTransaction.java:466)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitRequest.run(SplitRequest.java:82)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>   at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>   at java.lang.Thread.run(Thread.java:662)
> Caused by: java.util.concurrent.ExecutionException: 
> java.lang.NullPointerException
>   at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
>   at java.util.concurrent.FutureTask.get(FutureTask.java:83)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFiles(SplitTransaction.java:596)
>   ... 6 more
> Caused by: java.lang.NullPointerException
>   at 
> org.apache.hadoop.hbase.regionserver.HRegionFileSystem.splitStoreFile(HRegionFileSystem.java:539)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.splitStoreFile(SplitTransaction.java:610)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction.access$1(SplitTransaction.java:607)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:633)
>   at 
> org.apache.hadoop.hbase.regionserver.SplitTransaction$StoreFileSplitter.call(SplitTransaction.java:1)
>   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
>   at java.util.concurrent.FutureTask.run(FutureTask.java:138)
>   ... 3 more
> {code}
> If a storefile is empty(can be because of puts and deletes) then first and 
> lastkey of the file will be empty. Then we will get first or last key as 
> null. Then we will end up in NPE when we will check splitkey in the range or 
> not.
> {code}
> if (top) {
>   //check if larger than last key.
>   KeyValue splitKey = KeyValue.createFirstOnRow(splitRow);
>   byte[] lastKey = f.createReader().getLastKey();  
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), lastKey, 0, 
> lastKey.length) > 0) {
> return null;
>   }
> } else {
>   //check if smaller than first key
>   KeyValue splitKey = KeyValue.createLastOnRow(splitRow);
>   byte[] firstKey = f.createReader().getFirstKey();
>   if (f.getReader().getComparator().compare(splitKey.getBuffer(), 
>   splitKey.getKeyOffset(), splitKey.getKeyLength(), firstKey, 0, 
> firstKey.length) < 0) {
> return null;
>   }  
> }
> {code}

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