Hello,

  I'm running hbase 0.20.5, and seeing Puts() fail repeatedly when trying to 
insert a specific item into the database.

Client side I see:

org.apache.hadoop.hbase.client.RetriesExhaustedException: Trying to contact 
region server Some server, retryOnlyOne=true, index=0, islastrow=true, tries=9, 
numtries=10, i=0, listsize=1, 
region=filestore,bdfa9f2173033330cfae81ece08f75f0002bf3f3a54cde6bbf9192f0187e275b,1279604506836
 for region filestore,

I then looked up which node was hosting the given region 
(filestore,bdfa9f2173033330cfae81ece08f75f0002bf3f3a54cde6bbf9192f0187e275b) on 
the gui, found the following debug message in the regionserver log:

2010-08-06 14:23:47,414 DEBUG 
org.apache.hadoop.hbase.regionserver.HRegionServer: Batch puts interrupted at 
index=0 because:Requested row out of range for HRegion 
filestore,bdfa9f2173033330cfae81ece08f75f0002bf3f3a54cde6bbf9192f0187e275b,1279604506836,
 startKey='bdfa9f2173033330cfae81ece08f75f0002bf3f3a54cde6bbf9192f0187e275b', 
getEndKey()='be0bc7b3f8bc2a30910b9c758b47cdb730a4691e93f92abb857a2dcc7aefa633', 
row='be1681910b02db5da061659c2cb08f501a135c2f065559a37a1761bf6e203d1d'


Which appears to be coming from:

/regionserver/HRegionServer.java:1786:      LOG.debug("Batch puts interrupted 
at index=" + i + " because:" +

Which is coming from:

./java/org/apache/hadoop/hbase/regionserver/HRegion.java:1658:      throw new 
WrongRegionException("Requested row out of range for " +

This happens repeatedly on a specific item over at least a day or so, even when 
not much is happening with the cluster.

As far as I can tell, it looks like the logic to select the correct region for 
a given row is wrong. The row is indeed not in the correct range (at least from 
what I can tell of the exception thrown), and the check in HRegion.java:1658:

  /** Make sure this is a valid row for the HRegion */
  private void checkRow(final byte [] row) throws IOException {
    if(!rowIsInRange(regionInfo, row)) {

Is correctly rejecting the Put().

So it appears the error would be somewhere in: 
HRegion.java:1550: 
  private void put(final Map<byte [],List<KeyValue>> familyMap,
      boolean writeToWAL) throws IOException {

Which appears to be the actual guts of the insert operation.
However, I don't know enough about the design of HRegions to really decipher 
this method. I'll dig into it more, but I thought it might be more efficient 
just to ask you guys first.

Any ideas? 

I can update to 0.20.6, but I don't see any fixed jira's on 0.20.6 that seem 
related.. I could be wrong. I'm not sure what I should do next. Any more 
information you guys need?

Note that I am inserting file into the database, and using it's sha256sum as 
the key. And the file that is failing does indeed have a sha that corresponds 
to the key in the message above (and is out of range).

Take care,
  -stu




      

Reply via email to