You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2012/10/10 22:31:08 UTC
svn commit: r1396774 - in
/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data: ./
ServerColumnUpdate.java ServerMutation.java
Author: ecn
Date: Wed Oct 10 20:31:08 2012
New Revision: 1396774
URL: http://svn.apache.org/viewvc?rev=1396774&view=rev
Log:
ACCUMULO-786: squeeze bytes out of the serialized form of Mutation
Added:
accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/
accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerColumnUpdate.java (with props)
accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerMutation.java (with props)
Added: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerColumnUpdate.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerColumnUpdate.java?rev=1396774&view=auto
==============================================================================
--- accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerColumnUpdate.java (added)
+++ accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerColumnUpdate.java Wed Oct 10 20:31:08 2012
@@ -0,0 +1,20 @@
+package org.apache.accumulo.server.data;
+
+import org.apache.accumulo.core.data.ColumnUpdate;
+
+public class ServerColumnUpdate extends ColumnUpdate {
+
+ ServerMutation parent;
+
+ public ServerColumnUpdate(ColumnUpdate update, ServerMutation serverMutation) {
+ super(update.getColumnFamily(), update.getColumnQualifier(), update.getColumnVisibility(), update.hasTimestamp(), update.hasTimestamp() ? update.getTimestamp() : 0, update.isDeleted(), update.getValue());
+ parent = serverMutation;
+ }
+
+ public long getTimestamp() {
+ if (hasTimestamp())
+ return super.getTimestamp();
+ return parent.getSystemTimestamp();
+ }
+
+}
Propchange: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerColumnUpdate.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerMutation.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerMutation.java?rev=1396774&view=auto
==============================================================================
--- accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerMutation.java (added)
+++ accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerMutation.java Wed Oct 10 20:31:08 2012
@@ -0,0 +1,78 @@
+package org.apache.accumulo.server.data;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.accumulo.core.data.ColumnUpdate;
+import org.apache.accumulo.core.data.Mutation;
+import org.apache.accumulo.core.data.thrift.TMutation;
+import org.apache.hadoop.io.Text;
+import org.apache.hadoop.io.WritableUtils;
+import static org.apache.accumulo.core.data.Mutation.SERIALIZED_FORMAT.VERSION2;;
+
+/**
+ * Mutation that holds system time as computed by the tablet server when not provided by the user.
+ */
+public class ServerMutation extends Mutation {
+ private long systemTime = 0l;
+
+ public ServerMutation(TMutation tmutation) {
+ super(tmutation);
+ }
+
+ public ServerMutation(Text key) {
+ super(key);
+ }
+
+ public ServerMutation() {
+ }
+
+ @Override
+ public void readFields(DataInput in) throws IOException {
+ super.readFields(in);
+ // new format writes system time with the mutation
+ if (getSerializedFormat() == VERSION2)
+ systemTime = WritableUtils.readVLong(in);
+ else {
+ // old format stored it in the timestamp of each mutation
+ for (ColumnUpdate upd : getUpdates()) {
+ if (!upd.hasTimestamp()) {
+ systemTime = upd.getTimestamp();
+ break;
+ }
+ }
+ }
+ }
+
+ @Override
+ public void write(DataOutput out) throws IOException {
+ super.write(out);
+ WritableUtils.writeVLong(out, systemTime);
+ }
+
+ public void setSystemTimestamp(long v) {
+ this.systemTime = v;
+ }
+
+ public long getSystemTimestamp() {
+ return this.systemTime;
+ }
+
+ public List<ColumnUpdate> getUpdates() {
+ List<ColumnUpdate> updates = super.getUpdates();
+ List<ColumnUpdate> result = new ArrayList<ColumnUpdate>(updates.size());
+ for (ColumnUpdate update : updates) {
+ result.add(new ServerColumnUpdate(update, this));
+ }
+ return result;
+ }
+
+ @Override
+ public long estimatedMemoryUsed() {
+ return super.estimatedMemoryUsed() + 8;
+ }
+
+}
Propchange: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/data/ServerMutation.java
------------------------------------------------------------------------------
svn:eol-style = native