[
https://issues.apache.org/jira/browse/HBASE-1761?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack resolved HBASE-1761.
--------------------------
Resolution: Fixed
Hadoop Flags: [Reviewed]
Committed trunk and branch. Here's commit message:
{code}
Rewritten getclosestatorbefore that works with new style deletes (delete
family, delete column and just delete. Doesn't carry as much load as it
goes from memstore across storefiles (e.g. only one candidate is
carried rather than all as previous) and always goes for the target row
rather than zig-zag in so should perform a bit better. Includes fix
that should make it so we no longer return rows from wrong table. Also
add flush on drop of table.
M src/test/org/apache/hadoop/hbase/HBaseTestCase.java
Formatting.
A src/test/org/apache/hadoop/hbase/regionserver/TestGetClosestAtOrBefore.java
Added testing of getClosestAtOrBefore. Most of this test was in hbase before
hbase-1304 went in. Also dropped what was in TestMemStore testing
getClosest and moved it here instead.
M src/test/org/apache/hadoop/hbase/regionserver/TestMemStore.java
Made a little more stringent asserting row count same as column count.
Added new test to assert we can see new values as they come in as we scan
(More hbase-1738).
MemStore constructor no longer takes ttl. Removed the testGetClosest from
here and moved up into TestGetClosestAtOrBefore.
M src/test/org/apache/hadoop/hbase/regionserver/TestHRegion.java
Remove unused imports.
M src/test/org/apache/hadoop/hbase/regionserver/TestCompaction.java
Formatting.
A src/java/org/apache/hadoop/hbase/regionserver/GetClosestRowBeforeTracker.java
New class that holds getclosest state and utility. Like ScanDeleteTracker
and GetDeleteTracker but doens't implement the DeleteTracker interface
as it needs to span rows.
M src/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
Don't allocate ArrayList unless we're going to use it.
M src/java/org/apache/hadoop/hbase/regionserver/GetDeleteTracker.java
Fix the isEmpty.
M src/java/org/apache/hadoop/hbase/regionserver/MemStore.java
No longer takes a ttl in constructor (It now lives in
GetClosestRowBeforeTracker).
Reimplemented getClosestRowAtOrBefore.
M src/java/org/apache/hadoop/hbase/regionserver/HRegion.java
Reimplemented getClosestRowAtOrBefore.
M src/java/org/apache/hadoop/hbase/regionserver/Store.java
MemStore doesn't take a ttl. Reimplemented getClosestRowAtOrBefore.
M src/java/org/apache/hadoop/hbase/KeyValue.java
Added comparator that only looks at row portion of a KV. Useful for
case where want to use kv rather than extract its row as row key in map.
Changed the type on KVs that do not have values to be Type.Maximum by default.
(Was Type.Put by default). Removed cloneRow. Not a clone as Ryan pointed
out and can use constructor instead.
(isDelete, isDeleteFamily): Added.
M src/java/org/apache/hadoop/hbase/util/Bytes.java
Formatting.
M src/java/org/apache/hadoop/hbase/client/HConnectionManager.java
Log message.
M src/java/org/apache/hadoop/hbase/client/Put.java
Was allocating a Set twice on each Put deserialization.
M bin/HBase.rb
Flush before major compacting when dropping table.
{code}
> getclosest doesn't understand delete family; manifests as "HRegionInfo was
> null or empty in .META" A.K.A the BS problem
> -----------------------------------------------------------------------------------------------------------------------
>
> Key: HBASE-1761
> URL: https://issues.apache.org/jira/browse/HBASE-1761
> Project: Hadoop HBase
> Issue Type: Bug
> Reporter: stack
> Fix For: 0.20.0
>
> Attachments: 1761-v10.patch, 1761-v11.patch, 1761-v12.patch,
> 1761-v13.patch, 1761-v2.patch, 1761-v3.patch, 1761-v4.patch, 1761-v5.patch,
> 1761-v6.patch, 1761-v7.patch, 1761-v9.patch, 1761.patch
>
>
> getclosestatorbefore was not converted to deal with the new delete types. It
> only knows how to process old style deletes. Usually all is well as edits
> come in but its possible to get into state where you have persisted in one
> file a deletefamily for all in meta and in the file behind it, there are
> entries on the info family. Since closest doesn't understand deletefamily,
> it will return the Put rows only for the subsequent getfull, which knows how
> to work with deletefamilies fail.
> Once this happens, table is hosed. Seen on Bradford Stephens upload and at
> Powerset. "Fix" is flush and major compact. Gives impression that hbase is
> 'delicate'. Fixing.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.