Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.90.1, 0.90.3
-
None
-
Reviewed
Description
When scanning a table sometimes rows that have multiple column families get split into two rows if there are concurrent writes. In this particular case we are overwriting the contents of a Get directly back onto itself as a Put.
For example, this is a two cf row (with "f1", "f2", .. "f9" cfs). It is actually returned as two rows (#55 and #56). Interestingly if the two were merged we would have a single proper row.
Row row0000024461 had time stamps: [55: keyvalues=
{row0000024461/f0:data/1318200440867/Put/vlen=1000, row0000024461/f0:qual/1318200440867/Put/vlen=10, row0000024461/f1:data/1318200440867/Put/vlen=1000, row0000024461/f1:qual/1318200440867/Put/vlen=10, row0000024461/f2:data/1318200440867/Put/vlen=1000, row0000024461/f2:qual/1318200440867/Put/vlen=10, row0000024461/f3:data/1318200440867/Put/vlen=1000, row0000024461/f3:qual/1318200440867/Put/vlen=10, row0000024461/f4:data/1318200440867/Put/vlen=1000, row0000024461/f4:qual/1318200440867/Put/vlen=10},
56: keyvalues=
]
I've only tested this on 0.90.1+patches and 0.90.3+patches, but it is consistent and duplicatable.
Attachments
Attachments
Issue Links
- relates to
-
HBASE-3498 Memstore scanner needs new semantics, which may require new data structure
- Closed
-
HBASE-4485 Eliminate window of missing Data
- Closed
-
HBASE-2670 MemStore should retain multiple KVs with the same timestamp when memstoreTS differs
- Closed
-
HBASE-2856 TestAcidGuarantee broken on trunk
- Closed