You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2013/07/25 19:38:37 UTC

svn commit: r1507074 - in /hbase/branches/0.94/src: main/java/org/apache/hadoop/hbase/thrift2/ main/java/org/apache/hadoop/hbase/thrift2/generated/ main/resources/org/apache/hadoop/hbase/thrift2/ test/java/org/apache/hadoop/hbase/thrift2/

Author: larsgeorge
Date: Thu Jul 25 17:38:37 2013
New Revision: 1507074

URL: http://svn.apache.org/r1507074
Log:
HBASE-8947 Thrift 2 : Replace "bool writeToWAL" with "TDurability durability" (Hamed Madani)

Modified:
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDelete.java
    hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TPut.java
    hbase/branches/0.94/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
    hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java?rev=1507074&r1=1507073&r2=1507074&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java Thu Jul 25 17:38:37 2013
@@ -165,7 +165,11 @@ public class ThriftUtilities {
       out = new Put(in.getRow());
     }
 
-    out.setWriteToWAL(in.isWriteToWal());
+    if (in.isSetDurability()) {
+      out.setDurability(durabilityFromThrift(in.getDurability()));
+    } else if (in.isSetWriteToWal()) {
+      out.setWriteToWAL(in.isWriteToWal());
+    }
 
     for (TColumnValue columnValue : in.getColumnValues()) {
       if (columnValue.isSetTimestamp()) {
@@ -248,7 +252,12 @@ public class ThriftUtilities {
       addAttributes(out,in.getAttributes());
     }
 
-    out.setWriteToWAL(in.isWriteToWal());
+    if (in.isSetDurability()) {
+      out.setDurability(durabilityFromThrift(in.getDurability()));
+    } else if (in.isSetWriteToWal()) {
+      out.setWriteToWAL(in.isWriteToWal());
+    }
+
     return out;
   }
 
@@ -405,4 +414,14 @@ public class ThriftUtilities {
       op.setAttribute(name, value);
     }
   }
+
+  private static Durability durabilityFromThrift(TDurability tDurability) {
+    switch (tDurability.getValue()) {
+      case 1: return Durability.SKIP_WAL;
+      case 2: return Durability.ASYNC_WAL;
+      case 3: return Durability.SYNC_WAL;
+      case 4: return Durability.FSYNC_WAL;
+      default: return null;
+    }
+  }
 }

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDelete.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDelete.java?rev=1507074&r1=1507073&r2=1507074&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDelete.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDelete.java Thu Jul 25 17:38:37 2013
@@ -59,6 +59,7 @@ public class TDelete implements org.apac
   private static final org.apache.thrift.protocol.TField DELETE_TYPE_FIELD_DESC = new org.apache.thrift.protocol.TField("deleteType", org.apache.thrift.protocol.TType.I32, (short)4);
   private static final org.apache.thrift.protocol.TField WRITE_TO_WAL_FIELD_DESC = new org.apache.thrift.protocol.TField("writeToWal", org.apache.thrift.protocol.TType.BOOL, (short)5);
   private static final org.apache.thrift.protocol.TField ATTRIBUTES_FIELD_DESC = new org.apache.thrift.protocol.TField("attributes", org.apache.thrift.protocol.TType.MAP, (short)6);
+  private static final org.apache.thrift.protocol.TField DURABILITY_FIELD_DESC = new org.apache.thrift.protocol.TField("durability", org.apache.thrift.protocol.TType.I32, (short)7);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -76,6 +77,11 @@ public class TDelete implements org.apac
   public TDeleteType deleteType; // optional
   public boolean writeToWal; // optional
   public Map<ByteBuffer,ByteBuffer> attributes; // optional
+  /**
+   * 
+   * @see TDurability
+   */
+  public TDurability durability; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -88,7 +94,12 @@ public class TDelete implements org.apac
      */
     DELETE_TYPE((short)4, "deleteType"),
     WRITE_TO_WAL((short)5, "writeToWal"),
-    ATTRIBUTES((short)6, "attributes");
+    ATTRIBUTES((short)6, "attributes"),
+    /**
+     * 
+     * @see TDurability
+     */
+    DURABILITY((short)7, "durability");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -115,6 +126,8 @@ public class TDelete implements org.apac
           return WRITE_TO_WAL;
         case 6: // ATTRIBUTES
           return ATTRIBUTES;
+        case 7: // DURABILITY
+          return DURABILITY;
         default:
           return null;
       }
@@ -158,7 +171,7 @@ public class TDelete implements org.apac
   private static final int __TIMESTAMP_ISSET_ID = 0;
   private static final int __WRITETOWAL_ISSET_ID = 1;
   private BitSet __isset_bit_vector = new BitSet(2);
-  private _Fields optionals[] = {_Fields.COLUMNS,_Fields.TIMESTAMP,_Fields.DELETE_TYPE,_Fields.WRITE_TO_WAL,_Fields.ATTRIBUTES};
+  private _Fields optionals[] = {_Fields.COLUMNS,_Fields.TIMESTAMP,_Fields.DELETE_TYPE,_Fields.WRITE_TO_WAL,_Fields.ATTRIBUTES,_Fields.DURABILITY};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -177,6 +190,8 @@ public class TDelete implements org.apac
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING            , true), 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING            , true))));
+    tmpMap.put(_Fields.DURABILITY, new org.apache.thrift.meta_data.FieldMetaData("durability", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, TDurability.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TDelete.class, metaDataMap);
   }
@@ -184,8 +199,6 @@ public class TDelete implements org.apac
   public TDelete() {
     this.deleteType = org.apache.hadoop.hbase.thrift2.generated.TDeleteType.DELETE_COLUMNS;
 
-    this.writeToWal = true;
-
   }
 
   public TDelete(
@@ -234,6 +247,9 @@ public class TDelete implements org.apac
       }
       this.attributes = __this__attributes;
     }
+    if (other.isSetDurability()) {
+      this.durability = other.durability;
+    }
   }
 
   public TDelete deepCopy() {
@@ -248,9 +264,10 @@ public class TDelete implements org.apac
     this.timestamp = 0;
     this.deleteType = org.apache.hadoop.hbase.thrift2.generated.TDeleteType.DELETE_COLUMNS;
 
-    this.writeToWal = true;
-
+    setWriteToWalIsSet(false);
+    this.writeToWal = false;
     this.attributes = null;
+    this.durability = null;
   }
 
   public byte[] getRow() {
@@ -439,6 +456,38 @@ public class TDelete implements org.apac
     }
   }
 
+  /**
+   * 
+   * @see TDurability
+   */
+  public TDurability getDurability() {
+    return this.durability;
+  }
+
+  /**
+   * 
+   * @see TDurability
+   */
+  public TDelete setDurability(TDurability durability) {
+    this.durability = durability;
+    return this;
+  }
+
+  public void unsetDurability() {
+    this.durability = null;
+  }
+
+  /** Returns true if field durability is set (has been assigned a value) and false otherwise */
+  public boolean isSetDurability() {
+    return this.durability != null;
+  }
+
+  public void setDurabilityIsSet(boolean value) {
+    if (!value) {
+      this.durability = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case ROW:
@@ -489,6 +538,14 @@ public class TDelete implements org.apac
       }
       break;
 
+    case DURABILITY:
+      if (value == null) {
+        unsetDurability();
+      } else {
+        setDurability((TDurability)value);
+      }
+      break;
+
     }
   }
 
@@ -512,6 +569,9 @@ public class TDelete implements org.apac
     case ATTRIBUTES:
       return getAttributes();
 
+    case DURABILITY:
+      return getDurability();
+
     }
     throw new IllegalStateException();
   }
@@ -535,6 +595,8 @@ public class TDelete implements org.apac
       return isSetWriteToWal();
     case ATTRIBUTES:
       return isSetAttributes();
+    case DURABILITY:
+      return isSetDurability();
     }
     throw new IllegalStateException();
   }
@@ -606,6 +668,15 @@ public class TDelete implements org.apac
         return false;
     }
 
+    boolean this_present_durability = true && this.isSetDurability();
+    boolean that_present_durability = true && that.isSetDurability();
+    if (this_present_durability || that_present_durability) {
+      if (!(this_present_durability && that_present_durability))
+        return false;
+      if (!this.durability.equals(that.durability))
+        return false;
+    }
+
     return true;
   }
 
@@ -682,6 +753,16 @@ public class TDelete implements org.apac
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetDurability()).compareTo(typedOther.isSetDurability());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDurability()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.durability, typedOther.durability);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -751,6 +832,16 @@ public class TDelete implements org.apac
       }
       first = false;
     }
+    if (isSetDurability()) {
+      if (!first) sb.append(", ");
+      sb.append("durability:");
+      if (this.durability == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.durability);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -869,6 +960,14 @@ public class TDelete implements org.apac
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 7: // DURABILITY
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.durability = TDurability.findByValue(iprot.readI32());
+              struct.setDurabilityIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -935,6 +1034,13 @@ public class TDelete implements org.apac
           oprot.writeFieldEnd();
         }
       }
+      if (struct.durability != null) {
+        if (struct.isSetDurability()) {
+          oprot.writeFieldBegin(DURABILITY_FIELD_DESC);
+          oprot.writeI32(struct.durability.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -969,7 +1075,10 @@ public class TDelete implements org.apac
       if (struct.isSetAttributes()) {
         optionals.set(4);
       }
-      oprot.writeBitSet(optionals, 5);
+      if (struct.isSetDurability()) {
+        optionals.set(5);
+      }
+      oprot.writeBitSet(optionals, 6);
       if (struct.isSetColumns()) {
         {
           oprot.writeI32(struct.columns.size());
@@ -998,6 +1107,9 @@ public class TDelete implements org.apac
           }
         }
       }
+      if (struct.isSetDurability()) {
+        oprot.writeI32(struct.durability.getValue());
+      }
     }
 
     @Override
@@ -1005,7 +1117,7 @@ public class TDelete implements org.apac
       TTupleProtocol iprot = (TTupleProtocol) prot;
       struct.row = iprot.readBinary();
       struct.setRowIsSet(true);
-      BitSet incoming = iprot.readBitSet(5);
+      BitSet incoming = iprot.readBitSet(6);
       if (incoming.get(0)) {
         {
           org.apache.thrift.protocol.TList _list55 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
@@ -1047,6 +1159,10 @@ public class TDelete implements org.apac
         }
         struct.setAttributesIsSet(true);
       }
+      if (incoming.get(5)) {
+        struct.durability = TDurability.findByValue(iprot.readI32());
+        struct.setDurabilityIsSet(true);
+      }
     }
   }
 

Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TPut.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TPut.java?rev=1507074&r1=1507073&r2=1507074&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TPut.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/thrift2/generated/TPut.java Thu Jul 25 17:38:37 2013
@@ -46,6 +46,7 @@ public class TPut implements org.apache.
   private static final org.apache.thrift.protocol.TField TIMESTAMP_FIELD_DESC = new org.apache.thrift.protocol.TField("timestamp", org.apache.thrift.protocol.TType.I64, (short)3);
   private static final org.apache.thrift.protocol.TField WRITE_TO_WAL_FIELD_DESC = new org.apache.thrift.protocol.TField("writeToWal", org.apache.thrift.protocol.TType.BOOL, (short)4);
   private static final org.apache.thrift.protocol.TField ATTRIBUTES_FIELD_DESC = new org.apache.thrift.protocol.TField("attributes", org.apache.thrift.protocol.TType.MAP, (short)5);
+  private static final org.apache.thrift.protocol.TField DURABILITY_FIELD_DESC = new org.apache.thrift.protocol.TField("durability", org.apache.thrift.protocol.TType.I32, (short)6);
 
   private static final Map<Class<? extends IScheme>, SchemeFactory> schemes = new HashMap<Class<? extends IScheme>, SchemeFactory>();
   static {
@@ -58,6 +59,11 @@ public class TPut implements org.apache.
   public long timestamp; // optional
   public boolean writeToWal; // optional
   public Map<ByteBuffer,ByteBuffer> attributes; // optional
+  /**
+   * 
+   * @see TDurability
+   */
+  public TDurability durability; // optional
 
   /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */
   public enum _Fields implements org.apache.thrift.TFieldIdEnum {
@@ -65,7 +71,12 @@ public class TPut implements org.apache.
     COLUMN_VALUES((short)2, "columnValues"),
     TIMESTAMP((short)3, "timestamp"),
     WRITE_TO_WAL((short)4, "writeToWal"),
-    ATTRIBUTES((short)5, "attributes");
+    ATTRIBUTES((short)5, "attributes"),
+    /**
+     * 
+     * @see TDurability
+     */
+    DURABILITY((short)6, "durability");
 
     private static final Map<String, _Fields> byName = new HashMap<String, _Fields>();
 
@@ -90,6 +101,8 @@ public class TPut implements org.apache.
           return WRITE_TO_WAL;
         case 5: // ATTRIBUTES
           return ATTRIBUTES;
+        case 6: // DURABILITY
+          return DURABILITY;
         default:
           return null;
       }
@@ -133,7 +146,7 @@ public class TPut implements org.apache.
   private static final int __TIMESTAMP_ISSET_ID = 0;
   private static final int __WRITETOWAL_ISSET_ID = 1;
   private BitSet __isset_bit_vector = new BitSet(2);
-  private _Fields optionals[] = {_Fields.TIMESTAMP,_Fields.WRITE_TO_WAL,_Fields.ATTRIBUTES};
+  private _Fields optionals[] = {_Fields.TIMESTAMP,_Fields.WRITE_TO_WAL,_Fields.ATTRIBUTES,_Fields.DURABILITY};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -150,13 +163,13 @@ public class TPut implements org.apache.
         new org.apache.thrift.meta_data.MapMetaData(org.apache.thrift.protocol.TType.MAP, 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING            , true), 
             new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING            , true))));
+    tmpMap.put(_Fields.DURABILITY, new org.apache.thrift.meta_data.FieldMetaData("durability", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+        new org.apache.thrift.meta_data.EnumMetaData(org.apache.thrift.protocol.TType.ENUM, TDurability.class)));
     metaDataMap = Collections.unmodifiableMap(tmpMap);
     org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(TPut.class, metaDataMap);
   }
 
   public TPut() {
-    this.writeToWal = true;
-
   }
 
   public TPut(
@@ -204,6 +217,9 @@ public class TPut implements org.apache.
       }
       this.attributes = __this__attributes;
     }
+    if (other.isSetDurability()) {
+      this.durability = other.durability;
+    }
   }
 
   public TPut deepCopy() {
@@ -216,9 +232,10 @@ public class TPut implements org.apache.
     this.columnValues = null;
     setTimestampIsSet(false);
     this.timestamp = 0;
-    this.writeToWal = true;
-
+    setWriteToWalIsSet(false);
+    this.writeToWal = false;
     this.attributes = null;
+    this.durability = null;
   }
 
   public byte[] getRow() {
@@ -375,6 +392,38 @@ public class TPut implements org.apache.
     }
   }
 
+  /**
+   * 
+   * @see TDurability
+   */
+  public TDurability getDurability() {
+    return this.durability;
+  }
+
+  /**
+   * 
+   * @see TDurability
+   */
+  public TPut setDurability(TDurability durability) {
+    this.durability = durability;
+    return this;
+  }
+
+  public void unsetDurability() {
+    this.durability = null;
+  }
+
+  /** Returns true if field durability is set (has been assigned a value) and false otherwise */
+  public boolean isSetDurability() {
+    return this.durability != null;
+  }
+
+  public void setDurabilityIsSet(boolean value) {
+    if (!value) {
+      this.durability = null;
+    }
+  }
+
   public void setFieldValue(_Fields field, Object value) {
     switch (field) {
     case ROW:
@@ -417,6 +466,14 @@ public class TPut implements org.apache.
       }
       break;
 
+    case DURABILITY:
+      if (value == null) {
+        unsetDurability();
+      } else {
+        setDurability((TDurability)value);
+      }
+      break;
+
     }
   }
 
@@ -437,6 +494,9 @@ public class TPut implements org.apache.
     case ATTRIBUTES:
       return getAttributes();
 
+    case DURABILITY:
+      return getDurability();
+
     }
     throw new IllegalStateException();
   }
@@ -458,6 +518,8 @@ public class TPut implements org.apache.
       return isSetWriteToWal();
     case ATTRIBUTES:
       return isSetAttributes();
+    case DURABILITY:
+      return isSetDurability();
     }
     throw new IllegalStateException();
   }
@@ -520,6 +582,15 @@ public class TPut implements org.apache.
         return false;
     }
 
+    boolean this_present_durability = true && this.isSetDurability();
+    boolean that_present_durability = true && that.isSetDurability();
+    if (this_present_durability || that_present_durability) {
+      if (!(this_present_durability && that_present_durability))
+        return false;
+      if (!this.durability.equals(that.durability))
+        return false;
+    }
+
     return true;
   }
 
@@ -586,6 +657,16 @@ public class TPut implements org.apache.
         return lastComparison;
       }
     }
+    lastComparison = Boolean.valueOf(isSetDurability()).compareTo(typedOther.isSetDurability());
+    if (lastComparison != 0) {
+      return lastComparison;
+    }
+    if (isSetDurability()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.durability, typedOther.durability);
+      if (lastComparison != 0) {
+        return lastComparison;
+      }
+    }
     return 0;
   }
 
@@ -643,6 +724,16 @@ public class TPut implements org.apache.
       }
       first = false;
     }
+    if (isSetDurability()) {
+      if (!first) sb.append(", ");
+      sb.append("durability:");
+      if (this.durability == null) {
+        sb.append("null");
+      } else {
+        sb.append(this.durability);
+      }
+      first = false;
+    }
     sb.append(")");
     return sb.toString();
   }
@@ -756,6 +847,14 @@ public class TPut implements org.apache.
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
+          case 6: // DURABILITY
+            if (schemeField.type == org.apache.thrift.protocol.TType.I32) {
+              struct.durability = TDurability.findByValue(iprot.readI32());
+              struct.setDurabilityIsSet(true);
+            } else { 
+              org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
+            }
+            break;
           default:
             org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
         }
@@ -813,6 +912,13 @@ public class TPut implements org.apache.
           oprot.writeFieldEnd();
         }
       }
+      if (struct.durability != null) {
+        if (struct.isSetDurability()) {
+          oprot.writeFieldBegin(DURABILITY_FIELD_DESC);
+          oprot.writeI32(struct.durability.getValue());
+          oprot.writeFieldEnd();
+        }
+      }
       oprot.writeFieldStop();
       oprot.writeStructEnd();
     }
@@ -848,7 +954,10 @@ public class TPut implements org.apache.
       if (struct.isSetAttributes()) {
         optionals.set(2);
       }
-      oprot.writeBitSet(optionals, 3);
+      if (struct.isSetDurability()) {
+        optionals.set(3);
+      }
+      oprot.writeBitSet(optionals, 4);
       if (struct.isSetTimestamp()) {
         oprot.writeI64(struct.timestamp);
       }
@@ -865,6 +974,9 @@ public class TPut implements org.apache.
           }
         }
       }
+      if (struct.isSetDurability()) {
+        oprot.writeI32(struct.durability.getValue());
+      }
     }
 
     @Override
@@ -884,7 +996,7 @@ public class TPut implements org.apache.
         }
       }
       struct.setColumnValuesIsSet(true);
-      BitSet incoming = iprot.readBitSet(3);
+      BitSet incoming = iprot.readBitSet(4);
       if (incoming.get(0)) {
         struct.timestamp = iprot.readI64();
         struct.setTimestampIsSet(true);
@@ -908,6 +1020,10 @@ public class TPut implements org.apache.
         }
         struct.setAttributesIsSet(true);
       }
+      if (incoming.get(3)) {
+        struct.durability = TDurability.findByValue(iprot.readI32());
+        struct.setDurabilityIsSet(true);
+      }
     }
   }
 

Modified: hbase/branches/0.94/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift?rev=1507074&r1=1507073&r2=1507074&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift (original)
+++ hbase/branches/0.94/src/main/resources/org/apache/hadoop/hbase/thrift2/hbase.thrift Thu Jul 25 17:38:37 2013
@@ -78,6 +78,21 @@ enum TDeleteType {
 }
 
 /**
+ * Specify Durability:
+ *  - SKIP_WAL means do not write the Mutation to the WAL.
+ *  - ASYNC_WAL means write the Mutation to the WAL asynchronously,
+ *  - SYNC_WAL means write the Mutation to the WAL synchronously,
+ *  - FSYNC_WAL means Write the Mutation to the WAL synchronously and force the entries to disk.
+ */
+
+enum TDurability {
+  SKIP_WAL = 1,
+  ASYNC_WAL = 2,
+  SYNC_WAL = 3,
+  FSYNC_WAL = 4
+}
+
+/**
  * Used to perform Get operations on a single row.
  *
  * The scope can be further narrowed down by specifying a list of
@@ -117,8 +132,9 @@ struct TPut {
   1: required binary row,
   2: required list<TColumnValue> columnValues
   3: optional i64 timestamp,
-  4: optional bool writeToWal = 1,
-  5: optional map<binary, binary> attributes
+  4: optional bool writeToWal,
+  5: optional map<binary, binary> attributes,
+  6: optional TDurability durability
 }
 
 /**
@@ -149,8 +165,9 @@ struct TDelete {
   2: optional list<TColumn> columns,
   3: optional i64 timestamp,
   4: optional TDeleteType deleteType = 1,
-  5: optional bool writeToWal = 1,
-  6: optional map<binary, binary> attributes
+  5: optional bool writeToWal,
+  6: optional map<binary, binary> attributes,
+  7: optional TDurability durability
 }
 
 /**

Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java?rev=1507074&r1=1507073&r2=1507074&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandler.java Thu Jul 25 17:38:37 2013
@@ -40,6 +40,7 @@ import org.apache.hadoop.hbase.client.Ge
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.client.Delete;
+import org.apache.hadoop.hbase.client.Durability;
 import org.apache.hadoop.hbase.filter.ParseFilter;
 import org.apache.hadoop.hbase.thrift.ThriftMetrics;
 import org.apache.hadoop.hbase.thrift2.generated.TColumn;
@@ -57,6 +58,7 @@ import org.apache.hadoop.hbase.thrift2.g
 import org.apache.hadoop.hbase.thrift2.generated.TScan;
 import org.apache.hadoop.hbase.thrift2.generated.TMutation;
 import org.apache.hadoop.hbase.thrift2.generated.TRowMutations;
+import org.apache.hadoop.hbase.thrift2.generated.TDurability;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.metrics.ContextFactory;
 import org.apache.hadoop.metrics.MetricsContext;
@@ -851,6 +853,88 @@ public class TestThriftHBaseServiceHandl
     assertTColumnValuesEqual(expectedColumnValues, returnedColumnValues);
   }
 
+  /**
+   * Create TPut, TDelete , TIncrement objects, set durability then call ThriftUtility
+   * functions to get Put , Delete and Increment respectively. Use getDurability to make sure
+   * the returned objects have the appropriate durability setting.
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testDurability() throws Exception {
+    byte[] rowName = "testDurability".getBytes();
+    List<TColumnValue> columnValues = new ArrayList<TColumnValue>();
+    columnValues.add(new TColumnValue(wrap(familyAname), wrap(qualifierAname), wrap(valueAname)));
+
+    List<TColumnIncrement> incrementColumns = new ArrayList<TColumnIncrement>();
+    incrementColumns.add(new TColumnIncrement(wrap(familyAname), wrap(qualifierAname)));
+
+    TDelete tDelete = new TDelete(wrap(rowName));
+
+    //if not setting writeToWal, check for default value
+    Delete delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.USE_DEFAULT);
+
+    //if setting writeToWal to true, durability should be CF default
+    tDelete.setWriteToWal(true);
+    delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.USE_DEFAULT);
+
+    //if setting writeToWal to false, durability should be SKIP_WAL
+    tDelete.setWriteToWal(false);
+    delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.SKIP_WAL);
+
+
+    tDelete.setDurability(TDurability.SKIP_WAL);
+    delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.SKIP_WAL);
+
+    tDelete.setDurability(TDurability.ASYNC_WAL);
+    delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.ASYNC_WAL);
+
+    tDelete.setDurability(TDurability.SYNC_WAL);
+    delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.SYNC_WAL);
+
+    tDelete.setDurability(TDurability.FSYNC_WAL);
+    delete = deleteFromThrift(tDelete);
+    assertEquals(delete.getDurability(), Durability.FSYNC_WAL);
+
+    TPut tPut = new TPut(wrap(rowName), columnValues);
+
+    //if not setting writeToWal, check for default value
+    Put put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.USE_DEFAULT);
+
+    //if setting writeToWal to true, durability should be CF default
+    tPut.setWriteToWal(true);
+    put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.USE_DEFAULT);
+
+    //if setting writeToWal to false, durability should be SKIP_WAL
+    tPut.setWriteToWal(false);
+    put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.SKIP_WAL);
+
+    tPut.setDurability(TDurability.SKIP_WAL);
+    put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.SKIP_WAL);
+
+    tPut.setDurability(TDurability.ASYNC_WAL);
+    put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.ASYNC_WAL);
+
+    tPut.setDurability(TDurability.SYNC_WAL);
+    put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.SYNC_WAL);
+
+    tPut.setDurability(TDurability.FSYNC_WAL);
+    put = putFromThrift(tPut);
+    assertEquals(put.getDurability(), Durability.FSYNC_WAL);
+  }
+
   private static ThriftMetrics getMetrics(Configuration conf) throws Exception {
     setupMetricsContext();
     return new ThriftMetrics(Integer.parseInt(ThriftServer.DEFAULT_LISTEN_PORT),