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);
+ }
}
/**