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 {


Reply via email to