Author: stack
Date: Tue Nov 3 19:40:08 2009
New Revision: 832526
URL: http://svn.apache.org/viewvc?rev=832526&view=rev
Log:
HBASE-1954 Transactional scans do not see newest put
Modified:
hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionState.java
hadoop/hbase/trunk/src/contrib/transactional/src/test/org/apache/hadoop/hbase/client/transactional/TestTransactions.java
Modified:
hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionState.java
URL:
http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionState.java?rev=832526&r1=832525&r2=832526&view=diff
==============================================================================
---
hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionState.java
(original)
+++
hadoop/hbase/trunk/src/contrib/transactional/src/java/org/apache/hadoop/hbase/regionserver/transactional/TransactionState.java
Tue Nov 3 19:40:08 2009
@@ -138,6 +138,14 @@
}
void addWrite(final Put write) {
+ byte [] now = Bytes.toBytes(System.currentTimeMillis());
+ // HAVE to manually set the KV timestamps
+ for (List<KeyValue> kvs : write.getFamilyMap().values()) {
+ for (KeyValue kv : kvs) {
+ kv.updateLatestStamp(now);
+ }
+ }
+
puts.add(write);
}
Modified:
hadoop/hbase/trunk/src/contrib/transactional/src/test/org/apache/hadoop/hbase/client/transactional/TestTransactions.java
URL:
http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/contrib/transactional/src/test/org/apache/hadoop/hbase/client/transactional/TestTransactions.java?rev=832526&r1=832525&r2=832526&view=diff
==============================================================================
---
hadoop/hbase/trunk/src/contrib/transactional/src/test/org/apache/hadoop/hbase/client/transactional/TestTransactions.java
(original)
+++
hadoop/hbase/trunk/src/contrib/transactional/src/test/org/apache/hadoop/hbase/client/transactional/TestTransactions.java
Tue Nov 3 19:40:08 2009
@@ -169,6 +169,30 @@
Assert.assertEquals(Bytes.toString(ROW2), Bytes.toString(result.getRow()));
Assert.assertEquals(row2Value, Bytes.toInt(result.value()));
}
+
+ public void testPutPutScan() throws IOException {
+ TransactionState transactionState = transactionManager.beginTransaction();
+
+ int row2Value = 199;
+ table.put(transactionState, new Put(ROW2).add(FAMILY, QUAL_A, Bytes
+ .toBytes(row2Value)));
+
+ row2Value = 299;
+ table.put(transactionState, new Put(ROW2).add(FAMILY, QUAL_A, Bytes
+ .toBytes(row2Value)));
+
+ ResultScanner scanner = table.getScanner(transactionState, new Scan()
+ .addFamily(FAMILY));
+
+ Result result = scanner.next();
+ Assert.assertNotNull(result);
+ Assert.assertEquals(Bytes.toString(ROW1), Bytes.toString(result.getRow()));
+
+ result = scanner.next();
+ Assert.assertNotNull(result);
+ Assert.assertEquals(Bytes.toString(ROW2), Bytes.toString(result.getRow()));
+ Assert.assertEquals(row2Value, Bytes.toInt(result.value()));
+ }
// Read from ROW1,COL_A and put it in ROW2_COLA and ROW3_COLA
private TransactionState makeTransaction1() throws IOException {