Try adding this change:
Index: bin/check_meta.rb
===================================================================
--- bin/check_meta.rb (revision 1129468)
+++ bin/check_meta.rb (working copy)
@@ -127,11 +127,13 @@
scan = Scan.new()
scanner = metatable.getScanner(scan)
oldHRI = nil
-bad = nil
+bad = 0
while (result = scanner.next())
rowid = Bytes.toString(result.getRow())
rowidStr = java.lang.String.new(rowid)
bytes = result.getValue(HConstants::CATALOG_FAMILY,
HConstants::REGIONINFO_QUALIFIER)
+ next if not bytes
+ next if bytes.length == 0
hri = Writables.getHRegionInfo(bytes)
if oldHRI
if oldHRI.isOffline() && Bytes.equals(oldHRI.getStartKey(),
hri.getStartKey())
You might print out the result you have if the qualifier is null just
to see what are the rows missing an HRegionInfo.
St.Ack
On Tue, May 31, 2011 at 9:02 AM, Robert Gonzalez
<[email protected]> wrote:
> I'm trying my "nuclear" option: basically copy the data from the old db to a
> new one, skipping over bad regions. The bad news is that it is taking
> forever.
>
>
> I get a stack trace just trying to run check_meta.rb:
>
> maxpoint@c1-m02:/usr/lib/hbase/bin$ ./hbase org.jruby.Main check_meta.rb
> Writables.java:75:in `org.apache.hadoop.hbase.util.Writables.getWritable':
> java.lang.NullPointerException: null (NativeException)
> from Writables.java:119:in
> `org.apache.hadoop.hbase.util.Writables.getHRegionInfo'
> from NativeMethodAccessorImpl.java:-2:in
> `sun.reflect.NativeMethodAccessorImpl.invoke0'
> from NativeMethodAccessorImpl.java:39:in
> `sun.reflect.NativeMethodAccessorImpl.invoke'
> from DelegatingMethodAccessorImpl.java:25:in
> `sun.reflect.DelegatingMethodAccessorImpl.invoke'
> from Method.java:597:in `java.lang.reflect.Method.invoke'
> from JavaMethod.java:196:in
> `org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling'
> from JavaMethod.java:182:in
> `org.jruby.javasupport.JavaMethod.invoke_static'
> from JavaClass.java:371:in
> `org.jruby.javasupport.JavaClass$StaticMethodInvoker.execute'
> ... 17 levels...
> from Main.java:183:in `org.jruby.Main.runInterpreter'
> from Main.java:120:in `org.jruby.Main.run'
> from Main.java:95:in `org.jruby.Main.main'
> Complete Java stackTrace
> java.lang.NullPointerException
> at
> org.apache.hadoop.hbase.util.Writables.getWritable(Writables.java:75)
> at
> org.apache.hadoop.hbase.util.Writables.getHRegionInfo(Writables.java:119)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.jruby.javasupport.JavaMethod.invokeWithExceptionHandling(JavaMethod.java:196)
> at org.jruby.javasupport.JavaMethod.invoke_static(JavaMethod.java:182)
> at
> org.jruby.javasupport.JavaClass$StaticMethodInvoker.execute(JavaClass.java:371)
> at
> org.jruby.internal.runtime.methods.SimpleCallbackMethod.call(SimpleCallbackMethod.java:81)
> at
> org.jruby.evaluator.EvaluationState.callNode(EvaluationState.java:571)
> at
> org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:207)
> at
> org.jruby.evaluator.EvaluationState.localAsgnNode(EvaluationState.java:1254)
> at
> org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:286)
> at
> org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:533)
> at
> org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
> at
> org.jruby.evaluator.EvaluationState.whileNode(EvaluationState.java:1793)
> at
> org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:387)
> at
> org.jruby.evaluator.EvaluationState.blockNode(EvaluationState.java:533)
> at
> org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:201)
> at
> org.jruby.evaluator.EvaluationState.rootNode(EvaluationState.java:1628)
> at
> org.jruby.evaluator.EvaluationState.evalInternal(EvaluationState.java:356)
> at org.jruby.evaluator.EvaluationState.eval(EvaluationState.java:164)
> at org.jruby.Ruby.eval(Ruby.java:278)
> at org.jruby.Ruby.compileOrFallbackAndRun(Ruby.java:306)
> at org.jruby.Main.runInterpreter(Main.java:238)
> at org.jruby.Main.runInterpreter(Main.java:183)
> at org.jruby.Main.run(Main.java:120)
> at org.jruby.Main.main(Main.java:95)
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Stack
> Sent: Friday, May 27, 2011 12:43 AM
> To: [email protected]
> Subject: Re: wrong region exception
>
> Robert:
>
> Looks like script already exists. Check bin/check_meta.rb. If you pass it
> --fix it should plug the hole. Read the head of the script for how to run it.
>
> Good luck,
> St.Ack
>
> On Thu, May 26, 2011 at 1:06 PM, Robert Gonzalez
> <[email protected]> wrote:
>> I sent the meta.txt to your saint.ack@gmail .com account due to the
>> attachment.
>>
>> -----Original Message-----
>> From: [email protected] [mailto:[email protected]] On Behalf Of
>> Stack
>> Sent: Thursday, May 26, 2011 1:35 PM
>> To: [email protected]
>> Subject: Re: wrong region exception
>>
>> On Thu, May 26, 2011 at 8:06 AM, Robert Gonzalez
>> <[email protected]> wrote:
>>> It looks like an entire region is missing, here is the online table:
>>>
>>> urlhashv2,7FF1A5BF839C37078083B4F8267008F6,1303028235302.b0d55566fd0e
>>> 0 2ae98541618396aa7b1.
>>> c1-s03.atxd.maxpointinteractive.com:60030
>>> 7FF1A5BF839C37078083B4F8267008F6
>>> 80116D7E506D87ED39EAFFE784B5B590
>>> urlhashv2,8031483E0B3B7F587020FCBB764272D9,1305226123483.3ed065ad87f8
>>> 9 aece6b994dd31b42b2a. c1-s33.atxd.maxpointinteractive.com:60030
>>> 8031483E0B3B7F587020FCBB764272D9
>>> 8041346D0B05617FA4B9152BFE9B18B9
>>>
>>> One ends at 80116D7E506D87ED39EAFFE784B5B590, but the next one doesn't
>>> start there.
>>>
>>
>> So, make sure you actually have a hole. Dump out your meta table:
>>
>> echo "scan '.META.'"| ./bin/hbase shell &> /tmp/meta.txt
>>
>> Then look ensure that there is a hole between the above regions (compare
>> start and end keys... the end key of one region needs to match the start key
>> of the next).
>>
>> If indeed a hole, you need to do a little surgery inserting a new missing
>> region (hbck should fix this but it doesn't have the smarts just yet).
>>
>> Basically, you create a new region with start and end keys to fill the hole
>> then you insert it into .META. and then assign it. There are some scripts
>> in our bin directory that do various parts of this. I'm pretty sure its
>> beyond any but a few figuring this mess out so if you do the above foot work
>> and provide a few more details, I'll hack up something for you (and
>> hopefully something generalized to be use by others later, and later to be
>> integrated into hbck).
>>
>> St.Ack
>>
>