You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by "Schlesiger, Chris (Civ, ARL/CISD)" <ch...@us.army.mil> on 2010/06/11 19:12:36 UTC

Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Classification:  UNCLASSIFIED 
Caveats: NONE

Our HBase contains people names for RowIDs, and we need our application
to be able to try other types of string matching to find rows other than
than the straight Substring and Regex matching that comes with the HBase
API in the filters package.

We were first working with HBase 0.20.1 where
WritableByteArrayComparable was an interface. I tried implementing the
interface and had no luck. I figured I'd better upgrade to the newest
HBase, which I just did. Now in 0.20.4, WritableByteArrayComparable is
an abstract class. Okay, so I changed my code to create a new child
class and I still ran into the same problem with crashing and no rows
returned by the scanner.

So I decided to just try out the mere idea of creating a new child
comparator to see if the same problem arose. I went to the HBase source
code for the 0.20.4 tag, and looked at the SubstringComparator class in
the filters package. I re-created it line by line in my own java
project. The class I created was the same except that since I wasn't in
the same package as the super class, I couldn't access the .value
property as on line 74. But it looked to me that it wasn't needed since
the getValue() method was overridden and ignoring .value anyway.

I created a scanner, created a RowFilter and passed in my
SubstringComparatorDuplicate, and ran the program. Same exact crash. If
I change my code only to create a SubstringComparator from the hbase jar
instead, it works perfectly and I get rows returned by the scanner.

Here are my symptoms:

The program halts for almost 30 seconds, then I get the following
exception:

org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to
contact region server 127.0.0.1:60062 for region People,,1276369002801,
row '', but failed after 10 attempts.
Exceptions:
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException
java.io.IOException: Call to /127.0.0.1:60062 failed on local exception:
java.io.EOFException

	at
org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegion
ServerWithRetries(HConnectionManager.java:1055)
	at
org.apache.hadoop.hbase.client.Htable$ClientScanner.nextScanner(HTable.j
ava:2003)
	at
org.apache.hadoop.hbase.client.Htable$ClientScanner.initialize(HTable.ja
va:1923)
	at
org.apache.hadoop.hbase.client.Htable.getScanner(HTable.java:403)
	at org.mycompany.test.search(Search.java:209)
	at org.mycompany.test.main(Main.java:40)

I tried putting break points on each of the methods in my
SubstringComparatorDuplicate, and the breakpoint in the write method
gets hit 10 times and then I get the exception.

I'm running HBase in pseudo-distributed mode on my development computer
until I get the code working. The database is small. I'm running Hadoop
0.20.2 in dfs mode only for the same reason.

I can't see any reason why my SubstringComparatorDuplicate class
shouldn't work. It is identical to the code found here

http://svn.apache.org/viewvc/hbase/tags/0.20.4/src/java/org/apache/hadoo
p/hbase/filter/SubstringComparator.java?view=markup

With only 2 exceptions.
1) I'm in a different package, project, and jar file.
2) Line 74 is commented out

Has anyone got any great ideas? I'm pretty much stuck now, and it's
looking like there's a bug in the HBase code as near as I can tell.

I'd appreciate the help. Thanks in advance.

Chris Schlesiger
cschles@arl.army.mil
Electronics/Software Engineer
U.S. Army Research Lab
Voc: 301-394-2473
Fax: 301-394-3591
DSN 290-2473
Classification:  UNCLASSIFIED 
Caveats: NONE


RE: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by "Schlesiger, Chris (Civ, ARL/CISD)" <ch...@us.army.mil>.
Classification:  UNCLASSIFIED 
Caveats: NONE

Thanks Ted,

That was a huge help. I checked the -classpath, saw that it wasn't
finding my jar, and tried moving my jar to the $HBASE_HOME/lib folder. I
reran the ps -aux | grep and sure enough, my jar was listed. So I tried
it.

No crash, and the scanner returned results. Hooray! It seemed a little
slower than it should be, but I'll just start tweaking. 

But it looks like I'm on track. Thanks again. 


Chris Schlesiger
cschles@arl.army.mil
Electronics/Software Engineer
U.S. Army Research Lab
Voc: 301-394-2473
Fax: 301-394-3591
DSN 290-2473

-----Original Message-----
From: Ted Yu [mailto:yuzhihong@gmail.com] 
Sent: Wednesday, June 16, 2010 1:12 PM
To: user@hbase.apache.org
Subject: Re: Custom WritableByteArrayComparable crashing. Need help
please (UNCLASSIFIED)

Chris:
Use jps command to find the process Id of region server.
Then use the following to find out classpath passed to region server
(look for -classpath):
ps aux | grep <pid>

Simple test would be placing your jar under $HBASE_HOME/lib and see what
happens.

On Wed, Jun 16, 2010 at 9:58 AM, Schlesiger, Chris (Civ, ARL/CISD) <
chris.schlesiger@us.army.mil> wrote:

> Classification:  UNCLASSIFIED
> Caveats: NONE
>
> I checked the server logs (smacking myself on the forehead for not 
> doing so before) and I see this exception:
>
> ERROR org.apache.hadoop.hbase.regionserver.HRegionServer:
> org.apache.hadoop.hbase.UnknownScannerException: Name: -1
>        at
> org.apache.hadoop.hbase.regionserver.HRegionServer.next(HRegionServer.
> ja
> va:1889)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.j
> av
> a:57)
>        at
> sun.reflec.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
> rI
> mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:616)
>        at
> org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:657)
>        at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:9
> 15
> )
>
> And that jibes with the idea that the server needs to be aware of my 
> custom filter. I searched the mailing list archive for more 
> information on this and the only comment I could find was that the jar

> needs to be in the "CLASSPATH on the RegionServer". I took this to 
> mean that I should create a jar with my filter in it, and put it in a 
> folder on the same computer that is running the Hbase RegionServer and

> make sure that folder is in a CLASSPATH environment variable.
>
> I'm still a novice java programmer (C# is my area), so I did the best 
> I could. I moved my SubstringDuplicate class to its own jar and put it

> in a folder (since I'm running in pseudo-distributed mode while I get 
> all this working, this is all on one computer). I created a CLASSPATH 
> environment variable and added the path the jar is in to it. Restarted

> everything, and tested it.
>
> I'm still getting the same crash.
>
> I tried to follow up on the comment to "You also may need to add it to

> HbaseObjectWritable.java so it can be sent across the RPC layer." a
bit.
> I looked at the HBaseObjectWritable.java file and it looks like the 
> WritableByteArrayComparable class is already in that file as it should

> be. Since that's my super class, I would think my filter would be 
> covered, wouldn't it? I believe that's what was meant when it was said

> that 0.20.4 would fix that problem. Since it went from an interface to

> a base abstract super class for writable purposes.
>
> So I'm still stuck.
>
> Does the CLASSPATH need to be set in etc instead of my login 
> .bash_profile? I have the variable set in the same account I'm 
> starting hadoop and hbase up in.
>
> It seems to me that the HBase server needs something more to know that

> this filter exists, but I don't know how to tell it, and I can't find 
> any good examples for creating a custom filter for my scanner.
>
> I'd appreciate some more help. Thanks in advance.
>
> Chris Schlesiger
> cschles@arl.army.mil
> Electronics/Software Engineer
> U.S. Army Research Lab
> Voc: 301-394-2473
> Fax: 301-394-3591
> DSN 290-2473
>
> -----Original Message-----
> From: Jonathan Gray [mailto:jgray@facebook.com]
> Sent: Friday, June 11, 2010 1:31 PM
> To: user@hbase.apache.org
> Subject: RE: Custom WritableByteArrayComparable crashing. Need help 
> please (UNCLASSIFIED)
>
> Hey Chris,
>
> Did you check out the logs on the server side?  This should give some 
> more insight into what's going on.
>
> One thing to keep in mind is that the server needs to know about the 
> filter you are using (it needs to be in a jar in the classpath).  You 
> also may need to add it to HbaseObjectWritable.java so it can be sent 
> across the RPC layer.
>
> There should be some previous emails on the mailing list about this.
>
> JG
>
> > -----Original Message-----
> > From: Schlesiger, Chris (Civ, ARL/CISD) 
> > [mailto:chris.schlesiger@us.army.mil]
> > Sent: Friday, June 11, 2010 10:13 AM
> > To: user@hbase.apache.org
> > Subject: Custom WritableByteArrayComparable crashing. Need help 
> > please
> > (UNCLASSIFIED)
> >
> > Classification:  UNCLASSIFIED
> > Caveats: NONE
> >
> > Our HBase contains people names for RowIDs, and we need our 
> > application to be able to try other types of string matching to find

> > rows other than than the straight Substring and Regex matching that 
> > comes with the HBase API in the filters package.
> >
> > We were first working with HBase 0.20.1 where 
> > WritableByteArrayComparable was an interface. I tried implementing 
> > the
>
> > interface and had no luck. I figured I'd better upgrade to the 
> > newest HBase, which I just did. Now in 0.20.4, 
> > WritableByteArrayComparable is
>
> > an abstract class. Okay, so I changed my code to create a new child 
> > class and I still ran into the same problem with crashing and no 
> > rows returned by the scanner.
> >
> > So I decided to just try out the mere idea of creating a new child 
> > comparator to see if the same problem arose. I went to the HBase 
> > source code for the 0.20.4 tag, and looked at the 
> > SubstringComparator class in the filters package. I re-created it 
> > line by line in my own java project. The class I created was the 
> > same except that since I wasn't in the same package as the super 
> > class, I couldn't access the .value property as on line 74. But it 
> > looked to me that it wasn't needed since the getValue() method was 
> > overridden and ignoring .value
> anyway.
> >
> > I created a scanner, created a RowFilter and passed in my 
> > SubstringComparatorDuplicate, and ran the program. Same exact crash.
> > If I change my code only to create a SubstringComparator from the 
> > hbase jar instead, it works perfectly and I get rows returned by the

> > scanner.
> >
> > Here are my symptoms:
> >
> > The program halts for almost 30 seconds, then I get the following
> > exception:
> >
> > org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to 
> > contact region server 127.0.0.1:60062 for region 
> > People,,1276369002801, row '', but failed after 10 attempts.
> > Exceptions:
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> >
> >       at
> > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRe
> > gi
> > o
> > n
> > ServerWithRetries(HConnectionManager.java:1055)
> >       at
> >
>
org.apache.hadoop.hbase.client.Htable$ClientScanner.nextScanner(HTable.
> > j
> > ava:2003)
> >       at
> >
org.apache.hadoop.hbase.client.Htable$ClientScanner.initialize(HTable.
> > j
> > a
> > va:1923)
> >       at
> > org.apache.hadoop.hbase.client.Htable.getScanner(HTable.java:403)
> >       at org.mycompany.test.search(Search.java:209)
> >       at org.mycompany.test.main(Main.java:40)
> >
> > I tried putting break points on each of the methods in my 
> > SubstringComparatorDuplicate, and the breakpoint in the write method

> > gets hit 10 times and then I get the exception.
> >
> > I'm running HBase in pseudo-distributed mode on my development 
> > computer until I get the code working. The database is small. I'm 
> > running Hadoop
> > 0.20.2 in dfs mode only for the same reason.
> >
> > I can't see any reason why my SubstringComparatorDuplicate class 
> > shouldn't work. It is identical to the code found here
> >
> > http://svn.apache.org/viewvc/hbase/tags/0.20.4/src/java/org/apache/h
> > ad
> > o
> > o
> > p/hbase/filter/SubstringComparator.java?view=markup
> >
> > With only 2 exceptions.
> > 1) I'm in a different package, project, and jar file.
> > 2) Line 74 is commented out
> >
> > Has anyone got any great ideas? I'm pretty much stuck now, and it's 
> > looking like there's a bug in the HBase code as near as I can tell.
> >
> > I'd appreciate the help. Thanks in advance.
> >
> > Chris Schlesiger
> > cschles@arl.army.mil
> > Electronics/Software Engineer
> > U.S. Army Research Lab
> > Voc: 301-394-2473
> > Fax: 301-394-3591
> > DSN 290-2473
> > Classification:  UNCLASSIFIED
> > Caveats: NONE
>
> Classification:  UNCLASSIFIED
> Caveats: NONE
>
>
Classification:  UNCLASSIFIED 
Caveats: NONE


Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Ted Yu <yu...@gmail.com>.
Chris:
Use jps command to find the process Id of region server.
Then use the following to find out classpath passed to region server (look
for -classpath):
ps aux | grep <pid>

Simple test would be placing your jar under $HBASE_HOME/lib and see what
happens.

On Wed, Jun 16, 2010 at 9:58 AM, Schlesiger, Chris (Civ, ARL/CISD) <
chris.schlesiger@us.army.mil> wrote:

> Classification:  UNCLASSIFIED
> Caveats: NONE
>
> I checked the server logs (smacking myself on the forehead for not doing
> so before) and I see this exception:
>
> ERROR org.apache.hadoop.hbase.regionserver.HRegionServer:
> org.apache.hadoop.hbase.UnknownScannerException: Name: -1
>        at
> org.apache.hadoop.hbase.regionserver.HRegionServer.next(HRegionServer.ja
> va:1889)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
> a:57)
>        at
> sun.reflec.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
> mpl.java:43)
>        at java.lang.reflect.Method.invoke(Method.java:616)
>        at
> org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:657)
>        at
> org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:915
> )
>
> And that jibes with the idea that the server needs to be aware of my
> custom filter. I searched the mailing list archive for more information
> on this and the only comment I could find was that the jar needs to be
> in the "CLASSPATH on the RegionServer". I took this to mean that I
> should create a jar with my filter in it, and put it in a folder on the
> same computer that is running the Hbase RegionServer and make sure that
> folder is in a CLASSPATH environment variable.
>
> I'm still a novice java programmer (C# is my area), so I did the best I
> could. I moved my SubstringDuplicate class to its own jar and put it in
> a folder (since I'm running in pseudo-distributed mode while I get all
> this working, this is all on one computer). I created a CLASSPATH
> environment variable and added the path the jar is in to it. Restarted
> everything, and tested it.
>
> I'm still getting the same crash.
>
> I tried to follow up on the comment to "You also may need to add it to
> HbaseObjectWritable.java so it can be sent across the RPC layer." a bit.
> I looked at the HBaseObjectWritable.java file and it looks like the
> WritableByteArrayComparable class is already in that file as it should
> be. Since that's my super class, I would think my filter would be
> covered, wouldn't it? I believe that's what was meant when it was said
> that 0.20.4 would fix that problem. Since it went from an interface to a
> base abstract super class for writable purposes.
>
> So I'm still stuck.
>
> Does the CLASSPATH need to be set in etc instead of my login
> .bash_profile? I have the variable set in the same account I'm starting
> hadoop and hbase up in.
>
> It seems to me that the HBase server needs something more to know that
> this filter exists, but I don't know how to tell it, and I can't find
> any good examples for creating a custom filter for my scanner.
>
> I'd appreciate some more help. Thanks in advance.
>
> Chris Schlesiger
> cschles@arl.army.mil
> Electronics/Software Engineer
> U.S. Army Research Lab
> Voc: 301-394-2473
> Fax: 301-394-3591
> DSN 290-2473
>
> -----Original Message-----
> From: Jonathan Gray [mailto:jgray@facebook.com]
> Sent: Friday, June 11, 2010 1:31 PM
> To: user@hbase.apache.org
> Subject: RE: Custom WritableByteArrayComparable crashing. Need help
> please (UNCLASSIFIED)
>
> Hey Chris,
>
> Did you check out the logs on the server side?  This should give some
> more insight into what's going on.
>
> One thing to keep in mind is that the server needs to know about the
> filter you are using (it needs to be in a jar in the classpath).  You
> also may need to add it to HbaseObjectWritable.java so it can be sent
> across the RPC layer.
>
> There should be some previous emails on the mailing list about this.
>
> JG
>
> > -----Original Message-----
> > From: Schlesiger, Chris (Civ, ARL/CISD)
> > [mailto:chris.schlesiger@us.army.mil]
> > Sent: Friday, June 11, 2010 10:13 AM
> > To: user@hbase.apache.org
> > Subject: Custom WritableByteArrayComparable crashing. Need help please
> > (UNCLASSIFIED)
> >
> > Classification:  UNCLASSIFIED
> > Caveats: NONE
> >
> > Our HBase contains people names for RowIDs, and we need our
> > application to be able to try other types of string matching to find
> > rows other than than the straight Substring and Regex matching that
> > comes with the HBase API in the filters package.
> >
> > We were first working with HBase 0.20.1 where
> > WritableByteArrayComparable was an interface. I tried implementing the
>
> > interface and had no luck. I figured I'd better upgrade to the newest
> > HBase, which I just did. Now in 0.20.4, WritableByteArrayComparable is
>
> > an abstract class. Okay, so I changed my code to create a new child
> > class and I still ran into the same problem with crashing and no rows
> > returned by the scanner.
> >
> > So I decided to just try out the mere idea of creating a new child
> > comparator to see if the same problem arose. I went to the HBase
> > source code for the 0.20.4 tag, and looked at the SubstringComparator
> > class in the filters package. I re-created it line by line in my own
> > java project. The class I created was the same except that since I
> > wasn't in the same package as the super class, I couldn't access the
> > .value property as on line 74. But it looked to me that it wasn't
> > needed since the getValue() method was overridden and ignoring .value
> anyway.
> >
> > I created a scanner, created a RowFilter and passed in my
> > SubstringComparatorDuplicate, and ran the program. Same exact crash.
> > If I change my code only to create a SubstringComparator from the
> > hbase jar instead, it works perfectly and I get rows returned by the
> > scanner.
> >
> > Here are my symptoms:
> >
> > The program halts for almost 30 seconds, then I get the following
> > exception:
> >
> > org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to
> > contact region server 127.0.0.1:60062 for region
> > People,,1276369002801, row '', but failed after 10 attempts.
> > Exceptions:
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> >
> >       at
> > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegi
> > o
> > n
> > ServerWithRetries(HConnectionManager.java:1055)
> >       at
> >
> org.apache.hadoop.hbase.client.Htable$ClientScanner.nextScanner(HTable.
> > j
> > ava:2003)
> >       at
> > org.apache.hadoop.hbase.client.Htable$ClientScanner.initialize(HTable.
> > j
> > a
> > va:1923)
> >       at
> > org.apache.hadoop.hbase.client.Htable.getScanner(HTable.java:403)
> >       at org.mycompany.test.search(Search.java:209)
> >       at org.mycompany.test.main(Main.java:40)
> >
> > I tried putting break points on each of the methods in my
> > SubstringComparatorDuplicate, and the breakpoint in the write method
> > gets hit 10 times and then I get the exception.
> >
> > I'm running HBase in pseudo-distributed mode on my development
> > computer until I get the code working. The database is small. I'm
> > running Hadoop
> > 0.20.2 in dfs mode only for the same reason.
> >
> > I can't see any reason why my SubstringComparatorDuplicate class
> > shouldn't work. It is identical to the code found here
> >
> > http://svn.apache.org/viewvc/hbase/tags/0.20.4/src/java/org/apache/had
> > o
> > o
> > p/hbase/filter/SubstringComparator.java?view=markup
> >
> > With only 2 exceptions.
> > 1) I'm in a different package, project, and jar file.
> > 2) Line 74 is commented out
> >
> > Has anyone got any great ideas? I'm pretty much stuck now, and it's
> > looking like there's a bug in the HBase code as near as I can tell.
> >
> > I'd appreciate the help. Thanks in advance.
> >
> > Chris Schlesiger
> > cschles@arl.army.mil
> > Electronics/Software Engineer
> > U.S. Army Research Lab
> > Voc: 301-394-2473
> > Fax: 301-394-3591
> > DSN 290-2473
> > Classification:  UNCLASSIFIED
> > Caveats: NONE
>
> Classification:  UNCLASSIFIED
> Caveats: NONE
>
>

RE: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by "Schlesiger, Chris (Civ, ARL/CISD)" <ch...@us.army.mil>.
Classification:  UNCLASSIFIED 
Caveats: NONE

I checked the server logs (smacking myself on the forehead for not doing
so before) and I see this exception:

ERROR org.apache.hadoop.hbase.regionserver.HRegionServer:
org.apache.hadoop.hbase.UnknownScannerException: Name: -1
	at
org.apache.hadoop.hbase.regionserver.HRegionServer.next(HRegionServer.ja
va:1889)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:57)
	at
sun.reflec.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI
mpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at
org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:657)
	at
org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:915
)

And that jibes with the idea that the server needs to be aware of my
custom filter. I searched the mailing list archive for more information
on this and the only comment I could find was that the jar needs to be
in the "CLASSPATH on the RegionServer". I took this to mean that I
should create a jar with my filter in it, and put it in a folder on the
same computer that is running the Hbase RegionServer and make sure that
folder is in a CLASSPATH environment variable.

I'm still a novice java programmer (C# is my area), so I did the best I
could. I moved my SubstringDuplicate class to its own jar and put it in
a folder (since I'm running in pseudo-distributed mode while I get all
this working, this is all on one computer). I created a CLASSPATH
environment variable and added the path the jar is in to it. Restarted
everything, and tested it. 

I'm still getting the same crash.

I tried to follow up on the comment to "You also may need to add it to
HbaseObjectWritable.java so it can be sent across the RPC layer." a bit.
I looked at the HBaseObjectWritable.java file and it looks like the
WritableByteArrayComparable class is already in that file as it should
be. Since that's my super class, I would think my filter would be
covered, wouldn't it? I believe that's what was meant when it was said
that 0.20.4 would fix that problem. Since it went from an interface to a
base abstract super class for writable purposes.

So I'm still stuck. 

Does the CLASSPATH need to be set in etc instead of my login
.bash_profile? I have the variable set in the same account I'm starting
hadoop and hbase up in.

It seems to me that the HBase server needs something more to know that
this filter exists, but I don't know how to tell it, and I can't find
any good examples for creating a custom filter for my scanner.

I'd appreciate some more help. Thanks in advance.

Chris Schlesiger
cschles@arl.army.mil
Electronics/Software Engineer
U.S. Army Research Lab
Voc: 301-394-2473
Fax: 301-394-3591
DSN 290-2473

-----Original Message-----
From: Jonathan Gray [mailto:jgray@facebook.com] 
Sent: Friday, June 11, 2010 1:31 PM
To: user@hbase.apache.org
Subject: RE: Custom WritableByteArrayComparable crashing. Need help
please (UNCLASSIFIED)

Hey Chris,

Did you check out the logs on the server side?  This should give some
more insight into what's going on.

One thing to keep in mind is that the server needs to know about the
filter you are using (it needs to be in a jar in the classpath).  You
also may need to add it to HbaseObjectWritable.java so it can be sent
across the RPC layer.

There should be some previous emails on the mailing list about this.

JG

> -----Original Message-----
> From: Schlesiger, Chris (Civ, ARL/CISD) 
> [mailto:chris.schlesiger@us.army.mil]
> Sent: Friday, June 11, 2010 10:13 AM
> To: user@hbase.apache.org
> Subject: Custom WritableByteArrayComparable crashing. Need help please
> (UNCLASSIFIED)
> 
> Classification:  UNCLASSIFIED
> Caveats: NONE
> 
> Our HBase contains people names for RowIDs, and we need our 
> application to be able to try other types of string matching to find 
> rows other than than the straight Substring and Regex matching that 
> comes with the HBase API in the filters package.
> 
> We were first working with HBase 0.20.1 where 
> WritableByteArrayComparable was an interface. I tried implementing the

> interface and had no luck. I figured I'd better upgrade to the newest 
> HBase, which I just did. Now in 0.20.4, WritableByteArrayComparable is

> an abstract class. Okay, so I changed my code to create a new child 
> class and I still ran into the same problem with crashing and no rows 
> returned by the scanner.
> 
> So I decided to just try out the mere idea of creating a new child 
> comparator to see if the same problem arose. I went to the HBase 
> source code for the 0.20.4 tag, and looked at the SubstringComparator 
> class in the filters package. I re-created it line by line in my own 
> java project. The class I created was the same except that since I 
> wasn't in the same package as the super class, I couldn't access the 
> .value property as on line 74. But it looked to me that it wasn't 
> needed since the getValue() method was overridden and ignoring .value
anyway.
> 
> I created a scanner, created a RowFilter and passed in my 
> SubstringComparatorDuplicate, and ran the program. Same exact crash. 
> If I change my code only to create a SubstringComparator from the 
> hbase jar instead, it works perfectly and I get rows returned by the 
> scanner.
> 
> Here are my symptoms:
> 
> The program halts for almost 30 seconds, then I get the following
> exception:
> 
> org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to 
> contact region server 127.0.0.1:60062 for region 
> People,,1276369002801, row '', but failed after 10 attempts.
> Exceptions:
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> 
> 	at
> org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegi
> o
> n
> ServerWithRetries(HConnectionManager.java:1055)
> 	at
>
org.apache.hadoop.hbase.client.Htable$ClientScanner.nextScanner(HTable.
> j
> ava:2003)
> 	at
> org.apache.hadoop.hbase.client.Htable$ClientScanner.initialize(HTable.
> j
> a
> va:1923)
> 	at
> org.apache.hadoop.hbase.client.Htable.getScanner(HTable.java:403)
> 	at org.mycompany.test.search(Search.java:209)
> 	at org.mycompany.test.main(Main.java:40)
> 
> I tried putting break points on each of the methods in my 
> SubstringComparatorDuplicate, and the breakpoint in the write method 
> gets hit 10 times and then I get the exception.
> 
> I'm running HBase in pseudo-distributed mode on my development 
> computer until I get the code working. The database is small. I'm 
> running Hadoop
> 0.20.2 in dfs mode only for the same reason.
> 
> I can't see any reason why my SubstringComparatorDuplicate class 
> shouldn't work. It is identical to the code found here
> 
> http://svn.apache.org/viewvc/hbase/tags/0.20.4/src/java/org/apache/had
> o
> o
> p/hbase/filter/SubstringComparator.java?view=markup
> 
> With only 2 exceptions.
> 1) I'm in a different package, project, and jar file.
> 2) Line 74 is commented out
> 
> Has anyone got any great ideas? I'm pretty much stuck now, and it's 
> looking like there's a bug in the HBase code as near as I can tell.
> 
> I'd appreciate the help. Thanks in advance.
> 
> Chris Schlesiger
> cschles@arl.army.mil
> Electronics/Software Engineer
> U.S. Army Research Lab
> Voc: 301-394-2473
> Fax: 301-394-3591
> DSN 290-2473
> Classification:  UNCLASSIFIED
> Caveats: NONE

Classification:  UNCLASSIFIED 
Caveats: NONE


Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Ryan Rawson <ry...@gmail.com>.
Because List is an interface, the deserialization probably uses an
ArrayList to hold the incoming objects.

-ryan

On Sat, Jun 12, 2010 at 12:15 PM, Ted Yu <yu...@gmail.com> wrote:
> I meant to say why subclasses of List use code for List.class.
> There is no such handling for subclasses of WritableByteArrayComparable,
> Writable, etc.
>
> On Sat, Jun 12, 2010 at 9:54 AM, Stack <st...@duboce.net> wrote:
>
>> On Fri, Jun 11, 2010 at 10:09 PM, Ted Yu <yu...@gmail.com> wrote:
>> > Why is List treated differently at line 267 in writeClassCode() ?
>>
>> Sorry Ted, different to what?
>>
>>
>> >      if ( List.class.isAssignableFrom(c)) {
>> >        code = CLASS_TO_CODE.get(List.class);
>> >      }
>> > I am wondering if the above logic should be applied to other classes in
>> > CLASS_TO_CODE.keySet().
>>
>>
>> Please say more.  I do not follow.
>>
>> Thanks,
>> St.Ack
>>
>>
>> >
>> > On Fri, Jun 11, 2010 at 11:14 AM, Stack <st...@duboce.net> wrote:
>> >
>> >> On Fri, Jun 11, 2010 at 10:55 AM, Todd Lipcon <to...@cloudera.com>
>> wrote:
>> >> >> One thing to keep in mind is that the server needs to know about the
>> >> filter
>> >> >> you are using (it needs to be in a jar in the classpath).  You also
>> may
>> >> need
>> >> >> to add it to HbaseObjectWritable.java so it can be sent across the
>> RPC
>> >> >> layer.
>> >> >>
>> >> >>
>> >> > That should only be an efficiency thing, right?
>> >> >
>> >> It should just be efficency but its broke currently in that it has to
>> >> be in place (I filed HBASE-2666 a little while ago).
>> >> St.Ack
>> >>
>> >
>>
>

Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Ted Yu <yu...@gmail.com>.
I meant to say why subclasses of List use code for List.class.
There is no such handling for subclasses of WritableByteArrayComparable,
Writable, etc.

On Sat, Jun 12, 2010 at 9:54 AM, Stack <st...@duboce.net> wrote:

> On Fri, Jun 11, 2010 at 10:09 PM, Ted Yu <yu...@gmail.com> wrote:
> > Why is List treated differently at line 267 in writeClassCode() ?
>
> Sorry Ted, different to what?
>
>
> >      if ( List.class.isAssignableFrom(c)) {
> >        code = CLASS_TO_CODE.get(List.class);
> >      }
> > I am wondering if the above logic should be applied to other classes in
> > CLASS_TO_CODE.keySet().
>
>
> Please say more.  I do not follow.
>
> Thanks,
> St.Ack
>
>
> >
> > On Fri, Jun 11, 2010 at 11:14 AM, Stack <st...@duboce.net> wrote:
> >
> >> On Fri, Jun 11, 2010 at 10:55 AM, Todd Lipcon <to...@cloudera.com>
> wrote:
> >> >> One thing to keep in mind is that the server needs to know about the
> >> filter
> >> >> you are using (it needs to be in a jar in the classpath).  You also
> may
> >> need
> >> >> to add it to HbaseObjectWritable.java so it can be sent across the
> RPC
> >> >> layer.
> >> >>
> >> >>
> >> > That should only be an efficiency thing, right?
> >> >
> >> It should just be efficency but its broke currently in that it has to
> >> be in place (I filed HBASE-2666 a little while ago).
> >> St.Ack
> >>
> >
>

Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Stack <st...@duboce.net>.
On Fri, Jun 11, 2010 at 10:09 PM, Ted Yu <yu...@gmail.com> wrote:
> Why is List treated differently at line 267 in writeClassCode() ?

Sorry Ted, different to what?


>      if ( List.class.isAssignableFrom(c)) {
>        code = CLASS_TO_CODE.get(List.class);
>      }
> I am wondering if the above logic should be applied to other classes in
> CLASS_TO_CODE.keySet().


Please say more.  I do not follow.

Thanks,
St.Ack


>
> On Fri, Jun 11, 2010 at 11:14 AM, Stack <st...@duboce.net> wrote:
>
>> On Fri, Jun 11, 2010 at 10:55 AM, Todd Lipcon <to...@cloudera.com> wrote:
>> >> One thing to keep in mind is that the server needs to know about the
>> filter
>> >> you are using (it needs to be in a jar in the classpath).  You also may
>> need
>> >> to add it to HbaseObjectWritable.java so it can be sent across the RPC
>> >> layer.
>> >>
>> >>
>> > That should only be an efficiency thing, right?
>> >
>> It should just be efficency but its broke currently in that it has to
>> be in place (I filed HBASE-2666 a little while ago).
>> St.Ack
>>
>

Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Ted Yu <yu...@gmail.com>.
Why is List treated differently at line 267 in writeClassCode() ?
      if ( List.class.isAssignableFrom(c)) {
        code = CLASS_TO_CODE.get(List.class);
      }
I am wondering if the above logic should be applied to other classes in
CLASS_TO_CODE.keySet().

On Fri, Jun 11, 2010 at 11:14 AM, Stack <st...@duboce.net> wrote:

> On Fri, Jun 11, 2010 at 10:55 AM, Todd Lipcon <to...@cloudera.com> wrote:
> >> One thing to keep in mind is that the server needs to know about the
> filter
> >> you are using (it needs to be in a jar in the classpath).  You also may
> need
> >> to add it to HbaseObjectWritable.java so it can be sent across the RPC
> >> layer.
> >>
> >>
> > That should only be an efficiency thing, right?
> >
> It should just be efficency but its broke currently in that it has to
> be in place (I filed HBASE-2666 a little while ago).
> St.Ack
>

Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Stack <st...@duboce.net>.
On Fri, Jun 11, 2010 at 10:55 AM, Todd Lipcon <to...@cloudera.com> wrote:
>> One thing to keep in mind is that the server needs to know about the filter
>> you are using (it needs to be in a jar in the classpath).  You also may need
>> to add it to HbaseObjectWritable.java so it can be sent across the RPC
>> layer.
>>
>>
> That should only be an efficiency thing, right?
>
It should just be efficency but its broke currently in that it has to
be in place (I filed HBASE-2666 a little while ago).
St.Ack

Re: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Todd Lipcon <to...@cloudera.com>.
On Fri, Jun 11, 2010 at 10:30 AM, Jonathan Gray <jg...@facebook.com> wrote:

> Hey Chris,
>
> Did you check out the logs on the server side?  This should give some more
> insight into what's going on.


> One thing to keep in mind is that the server needs to know about the filter
> you are using (it needs to be in a jar in the classpath).  You also may need
> to add it to HbaseObjectWritable.java so it can be sent across the RPC
> layer.
>
>
That should only be an efficiency thing, right?


> There should be some previous emails on the mailing list about this.
>
> JG
>
> > -----Original Message-----
> > From: Schlesiger, Chris (Civ, ARL/CISD)
> > [mailto:chris.schlesiger@us.army.mil]
> > Sent: Friday, June 11, 2010 10:13 AM
> > To: user@hbase.apache.org
> > Subject: Custom WritableByteArrayComparable crashing. Need help please
> > (UNCLASSIFIED)
> >
> > Classification:  UNCLASSIFIED
> > Caveats: NONE
> >
> > Our HBase contains people names for RowIDs, and we need our application
> > to be able to try other types of string matching to find rows other
> > than
> > than the straight Substring and Regex matching that comes with the
> > HBase
> > API in the filters package.
> >
> > We were first working with HBase 0.20.1 where
> > WritableByteArrayComparable was an interface. I tried implementing the
> > interface and had no luck. I figured I'd better upgrade to the newest
> > HBase, which I just did. Now in 0.20.4, WritableByteArrayComparable is
> > an abstract class. Okay, so I changed my code to create a new child
> > class and I still ran into the same problem with crashing and no rows
> > returned by the scanner.
> >
> > So I decided to just try out the mere idea of creating a new child
> > comparator to see if the same problem arose. I went to the HBase source
> > code for the 0.20.4 tag, and looked at the SubstringComparator class in
> > the filters package. I re-created it line by line in my own java
> > project. The class I created was the same except that since I wasn't in
> > the same package as the super class, I couldn't access the .value
> > property as on line 74. But it looked to me that it wasn't needed since
> > the getValue() method was overridden and ignoring .value anyway.
> >
> > I created a scanner, created a RowFilter and passed in my
> > SubstringComparatorDuplicate, and ran the program. Same exact crash. If
> > I change my code only to create a SubstringComparator from the hbase
> > jar
> > instead, it works perfectly and I get rows returned by the scanner.
> >
> > Here are my symptoms:
> >
> > The program halts for almost 30 seconds, then I get the following
> > exception:
> >
> > org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to
> > contact region server 127.0.0.1:60062 for region People,,1276369002801,
> > row '', but failed after 10 attempts.
> > Exceptions:
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> > java.io.IOException: Call to /127.0.0.1:60062 failed on local
> > exception:
> > java.io.EOFException
> >
> >       at
> > org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegio
> > n
> > ServerWithRetries(HConnectionManager.java:1055)
> >       at
> > org.apache.hadoop.hbase.client.Htable$ClientScanner.nextScanner(HTable.
> > j
> > ava:2003)
> >       at
> > org.apache.hadoop.hbase.client.Htable$ClientScanner.initialize(HTable.j
> > a
> > va:1923)
> >       at
> > org.apache.hadoop.hbase.client.Htable.getScanner(HTable.java:403)
> >       at org.mycompany.test.search(Search.java:209)
> >       at org.mycompany.test.main(Main.java:40)
> >
> > I tried putting break points on each of the methods in my
> > SubstringComparatorDuplicate, and the breakpoint in the write method
> > gets hit 10 times and then I get the exception.
> >
> > I'm running HBase in pseudo-distributed mode on my development computer
> > until I get the code working. The database is small. I'm running Hadoop
> > 0.20.2 in dfs mode only for the same reason.
> >
> > I can't see any reason why my SubstringComparatorDuplicate class
> > shouldn't work. It is identical to the code found here
> >
> > http://svn.apache.org/viewvc/hbase/tags/0.20.4/src/java/org/apache/hado
> > o
> > p/hbase/filter/SubstringComparator.java?view=markup
> >
> > With only 2 exceptions.
> > 1) I'm in a different package, project, and jar file.
> > 2) Line 74 is commented out
> >
> > Has anyone got any great ideas? I'm pretty much stuck now, and it's
> > looking like there's a bug in the HBase code as near as I can tell.
> >
> > I'd appreciate the help. Thanks in advance.
> >
> > Chris Schlesiger
> > cschles@arl.army.mil
> > Electronics/Software Engineer
> > U.S. Army Research Lab
> > Voc: 301-394-2473
> > Fax: 301-394-3591
> > DSN 290-2473
> > Classification:  UNCLASSIFIED
> > Caveats: NONE
>
>


-- 
Todd Lipcon
Software Engineer, Cloudera

RE: Custom WritableByteArrayComparable crashing. Need help please (UNCLASSIFIED)

Posted by Jonathan Gray <jg...@facebook.com>.
Hey Chris,

Did you check out the logs on the server side?  This should give some more insight into what's going on.

One thing to keep in mind is that the server needs to know about the filter you are using (it needs to be in a jar in the classpath).  You also may need to add it to HbaseObjectWritable.java so it can be sent across the RPC layer.

There should be some previous emails on the mailing list about this.

JG

> -----Original Message-----
> From: Schlesiger, Chris (Civ, ARL/CISD)
> [mailto:chris.schlesiger@us.army.mil]
> Sent: Friday, June 11, 2010 10:13 AM
> To: user@hbase.apache.org
> Subject: Custom WritableByteArrayComparable crashing. Need help please
> (UNCLASSIFIED)
> 
> Classification:  UNCLASSIFIED
> Caveats: NONE
> 
> Our HBase contains people names for RowIDs, and we need our application
> to be able to try other types of string matching to find rows other
> than
> than the straight Substring and Regex matching that comes with the
> HBase
> API in the filters package.
> 
> We were first working with HBase 0.20.1 where
> WritableByteArrayComparable was an interface. I tried implementing the
> interface and had no luck. I figured I'd better upgrade to the newest
> HBase, which I just did. Now in 0.20.4, WritableByteArrayComparable is
> an abstract class. Okay, so I changed my code to create a new child
> class and I still ran into the same problem with crashing and no rows
> returned by the scanner.
> 
> So I decided to just try out the mere idea of creating a new child
> comparator to see if the same problem arose. I went to the HBase source
> code for the 0.20.4 tag, and looked at the SubstringComparator class in
> the filters package. I re-created it line by line in my own java
> project. The class I created was the same except that since I wasn't in
> the same package as the super class, I couldn't access the .value
> property as on line 74. But it looked to me that it wasn't needed since
> the getValue() method was overridden and ignoring .value anyway.
> 
> I created a scanner, created a RowFilter and passed in my
> SubstringComparatorDuplicate, and ran the program. Same exact crash. If
> I change my code only to create a SubstringComparator from the hbase
> jar
> instead, it works perfectly and I get rows returned by the scanner.
> 
> Here are my symptoms:
> 
> The program halts for almost 30 seconds, then I get the following
> exception:
> 
> org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to
> contact region server 127.0.0.1:60062 for region People,,1276369002801,
> row '', but failed after 10 attempts.
> Exceptions:
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> java.io.IOException: Call to /127.0.0.1:60062 failed on local
> exception:
> java.io.EOFException
> 
> 	at
> org.apache.hadoop.hbase.client.HConnectionManager$TableServers.getRegio
> n
> ServerWithRetries(HConnectionManager.java:1055)
> 	at
> org.apache.hadoop.hbase.client.Htable$ClientScanner.nextScanner(HTable.
> j
> ava:2003)
> 	at
> org.apache.hadoop.hbase.client.Htable$ClientScanner.initialize(HTable.j
> a
> va:1923)
> 	at
> org.apache.hadoop.hbase.client.Htable.getScanner(HTable.java:403)
> 	at org.mycompany.test.search(Search.java:209)
> 	at org.mycompany.test.main(Main.java:40)
> 
> I tried putting break points on each of the methods in my
> SubstringComparatorDuplicate, and the breakpoint in the write method
> gets hit 10 times and then I get the exception.
> 
> I'm running HBase in pseudo-distributed mode on my development computer
> until I get the code working. The database is small. I'm running Hadoop
> 0.20.2 in dfs mode only for the same reason.
> 
> I can't see any reason why my SubstringComparatorDuplicate class
> shouldn't work. It is identical to the code found here
> 
> http://svn.apache.org/viewvc/hbase/tags/0.20.4/src/java/org/apache/hado
> o
> p/hbase/filter/SubstringComparator.java?view=markup
> 
> With only 2 exceptions.
> 1) I'm in a different package, project, and jar file.
> 2) Line 74 is commented out
> 
> Has anyone got any great ideas? I'm pretty much stuck now, and it's
> looking like there's a bug in the HBase code as near as I can tell.
> 
> I'd appreciate the help. Thanks in advance.
> 
> Chris Schlesiger
> cschles@arl.army.mil
> Electronics/Software Engineer
> U.S. Army Research Lab
> Voc: 301-394-2473
> Fax: 301-394-3591
> DSN 290-2473
> Classification:  UNCLASSIFIED
> Caveats: NONE