You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2012/06/22 00:14:24 UTC

svn commit: r1352713 - in /hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client: Delete.java Put.java

Author: mbautin
Date: Thu Jun 21 22:14:23 2012
New Revision: 1352713

URL: http://svn.apache.org/viewvc?rev=1352713&view=rev
Log:
[HBASE-6250] [89-fb] Use lowest possible versions for Put and Delete RPC

Author: mbautin

Summary: If optional fields such as writeToWAL are not specified (or are set to default values), we need to use the lowest possible versions of Put and Delete RPC format for backward-compatibility.

Test Plan: Unit tests

Reviewers: kannan, liyintang, nzhang, pkhemani

Reviewed By: pkhemani

Differential Revision: https://reviews.facebook.net/D3747

Modified:
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Delete.java
    hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Put.java

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Delete.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Delete.java?rev=1352713&r1=1352712&r2=1352713&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Delete.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Delete.java Thu Jun 21 22:14:23 2012
@@ -20,19 +20,17 @@
 
 package org.apache.hadoop.hbase.client;
 
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.io.Writable;
-
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.TreeMap;
+
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.KeyValue;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.io.Writable;
 
 /**
  * Used to perform Delete operations on a single row.
@@ -70,6 +68,9 @@ public class Delete extends Mutation
   implements Writable, Row, Comparable<Row> {
   private static final byte DELETE_VERSION = (byte)3;
 
+  private static final int ADDED_WRITE_TO_WAL_VERSION = 3;
+  private static final int ADDED_ATTRIBUTES_VERSION = 2;
+
   /** Constructor for Writable.  DO NOT USE */
   public Delete() {
     this((byte [])null);
@@ -236,7 +237,7 @@ public class Delete extends Mutation
     this.row = Bytes.readByteArray(in);
     this.ts = in.readLong();
     this.lockId = in.readLong();
-    if (version > 2) {
+    if (version >= ADDED_WRITE_TO_WAL_VERSION) {
       this.writeToWAL = in.readBoolean();
     }
     this.familyMap.clear();
@@ -246,23 +247,33 @@ public class Delete extends Mutation
       int numColumns = in.readInt();
       List<KeyValue> list = new ArrayList<KeyValue>(numColumns);
       for(int j=0;j<numColumns;j++) {
-    	KeyValue kv = new KeyValue();
-    	kv.readFields(in);
-    	list.add(kv);
+        KeyValue kv = new KeyValue();
+        kv.readFields(in);
+        list.add(kv);
       }
       this.familyMap.put(family, list);
     }
-    if (version > 1) {
+    if (version >= ADDED_ATTRIBUTES_VERSION) {
       readAttributes(in);
     }
   }
 
   public void write(final DataOutput out) throws IOException {
-    out.writeByte(DELETE_VERSION);
+    int version = 1;
+    if (!getAttributesMap().isEmpty()) {
+      version = Math.max(version, ADDED_ATTRIBUTES_VERSION);
+    }
+    if (!writeToWAL) {
+      version = Math.max(version, ADDED_WRITE_TO_WAL_VERSION);
+    }
+
+    out.writeByte(version);
     Bytes.writeByteArray(out, this.row);
     out.writeLong(this.ts);
     out.writeLong(this.lockId);
-    out.writeBoolean(this.writeToWAL);
+    if (version >= ADDED_WRITE_TO_WAL_VERSION) {
+      out.writeBoolean(writeToWAL);
+    }
     out.writeInt(familyMap.size());
     for(Map.Entry<byte [], List<KeyValue>> entry : familyMap.entrySet()) {
       Bytes.writeByteArray(out, entry.getKey());
@@ -272,7 +283,9 @@ public class Delete extends Mutation
         kv.write(out);
       }
     }
-    writeAttributes(out);
+    if (version >= ADDED_ATTRIBUTES_VERSION) {
+      writeAttributes(out);
+    }
   }
 
   /**

Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Put.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Put.java?rev=1352713&r1=1352712&r2=1352713&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Put.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/client/Put.java Thu Jun 21 22:14:23 2012
@@ -20,23 +20,22 @@
 
 package org.apache.hadoop.hbase.client;
 
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.io.HeapSize;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.ClassSize;
-import org.apache.hadoop.io.Writable;
-
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.TreeMap;
 
+import org.apache.hadoop.hbase.HConstants;
+import org.apache.hadoop.hbase.KeyValue;
+import org.apache.hadoop.hbase.io.HeapSize;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.ClassSize;
+import org.apache.hadoop.io.Writable;
+
 
 /**
  * Used to perform Put operations for a single row.
@@ -48,6 +47,7 @@ import java.util.TreeMap;
 public class Put extends Mutation
   implements HeapSize, Writable, Row, Comparable<Row> {
   private static final byte PUT_VERSION = (byte)2;
+  private static final int ADDED_ATTRIBUTES_VERSION = 2;
 
   private static final long OVERHEAD = ClassSize.align(
       ClassSize.OBJECT + 2 * ClassSize.REFERENCE +
@@ -379,14 +379,18 @@ public class Put extends Mutation
       }
       this.familyMap.put(family, keys);
     }
-    if (version > 1) {
+    if (version >= ADDED_ATTRIBUTES_VERSION) {
       readAttributes(in);
     }
   }
 
   public void write(final DataOutput out)
   throws IOException {
-    out.writeByte(PUT_VERSION);
+    int version = 1;
+    if (!getAttributesMap().isEmpty()) {
+      version = ADDED_ATTRIBUTES_VERSION;
+    }
+    out.writeByte(version);
     Bytes.writeByteArray(out, this.row);
     out.writeLong(this.ts);
     out.writeLong(this.lockId);
@@ -406,7 +410,9 @@ public class Put extends Mutation
         out.write(kv.getBuffer(), kv.getOffset(), kv.getLength());
       }
     }
-    writeAttributes(out);
+    if (version >= ADDED_ATTRIBUTES_VERSION) {
+      writeAttributes(out);
+    }
   }
 
   /**