Author: brandonwilliams Date: Thu Dec 22 16:41:21 2011 New Revision: 1222340
URL: http://svn.apache.org/viewvc?rev=1222340&view=rev Log: Truncate throws TOE on timeout instead of UA. Patch by brandonwilliams, reviewed by jbellis for CASSANDRA-3651 Modified: cassandra/trunk/interface/cassandra.thrift cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java Modified: cassandra/trunk/interface/cassandra.thrift URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/cassandra.thrift?rev=1222340&r1=1222339&r2=1222340&view=diff ============================================================================== --- cassandra/trunk/interface/cassandra.thrift (original) +++ cassandra/trunk/interface/cassandra.thrift Thu Dec 22 16:41:21 2011 @@ -46,7 +46,7 @@ namespace rb CassandraThrift # for every edit that doesn't result in a change to major/minor. # # See the Semantic Versioning Specification (SemVer) http://semver.org. -const string VERSION = "19.20.0" +const string VERSION = "19.22.1" # @@ -599,7 +599,7 @@ service Cassandra { some hosts are down. */ void truncate(1:required string cfname) - throws (1: InvalidRequestException ire, 2: UnavailableException ue), + throws (1: InvalidRequestException ire, 2: UnavailableException ue, 3: TimedOutException te), Modified: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java?rev=1222340&r1=1222339&r2=1222340&view=diff ============================================================================== --- cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (original) +++ cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java Thu Dec 22 16:41:21 2011 @@ -186,7 +186,7 @@ public class Cassandra { * * @param cfname */ - public void truncate(String cfname) throws InvalidRequestException, UnavailableException, org.apache.thrift.TException; + public void truncate(String cfname) throws InvalidRequestException, UnavailableException, TimedOutException, org.apache.thrift.TException; /** * for each schema version present in the cluster, returns a list of nodes at that version. @@ -1070,7 +1070,7 @@ public class Cassandra { return; } - public void truncate(String cfname) throws InvalidRequestException, UnavailableException, org.apache.thrift.TException + public void truncate(String cfname) throws InvalidRequestException, UnavailableException, TimedOutException, org.apache.thrift.TException { send_truncate(cfname); recv_truncate(); @@ -1086,7 +1086,7 @@ public class Cassandra { oprot_.getTransport().flush(); } - public void recv_truncate() throws InvalidRequestException, UnavailableException, org.apache.thrift.TException + public void recv_truncate() throws InvalidRequestException, UnavailableException, TimedOutException, org.apache.thrift.TException { org.apache.thrift.protocol.TMessage msg = iprot_.readMessageBegin(); if (msg.type == org.apache.thrift.protocol.TMessageType.EXCEPTION) { @@ -1106,6 +1106,9 @@ public class Cassandra { if (result.ue != null) { throw result.ue; } + if (result.te != null) { + throw result.te; + } return; } @@ -2422,7 +2425,7 @@ public class Cassandra { prot.writeMessageEnd(); } - public void getResult() throws InvalidRequestException, UnavailableException, org.apache.thrift.TException { + public void getResult() throws InvalidRequestException, UnavailableException, TimedOutException, org.apache.thrift.TException { if (getState() != org.apache.thrift.async.TAsyncMethodCall.State.RESPONSE_READ) { throw new IllegalStateException("Method call not finished!"); } @@ -3683,6 +3686,8 @@ public class Cassandra { result.ire = ire; } catch (UnavailableException ue) { result.ue = ue; + } catch (TimedOutException te) { + result.te = te; } catch (Throwable th) { LOGGER.error("Internal error processing truncate", th); org.apache.thrift.TApplicationException x = new org.apache.thrift.TApplicationException(org.apache.thrift.TApplicationException.INTERNAL_ERROR, "Internal error processing truncate"); @@ -9353,6 +9358,8 @@ public class Cassandra { private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException { try { + // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor. + __isset_bit_vector = new BitSet(1); read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in))); } catch (org.apache.thrift.TException te) { throw new java.io.IOException(te); @@ -20160,14 +20167,17 @@ public class Cassandra { private static final org.apache.thrift.protocol.TField IRE_FIELD_DESC = new org.apache.thrift.protocol.TField("ire", org.apache.thrift.protocol.TType.STRUCT, (short)1); private static final org.apache.thrift.protocol.TField UE_FIELD_DESC = new org.apache.thrift.protocol.TField("ue", org.apache.thrift.protocol.TType.STRUCT, (short)2); + private static final org.apache.thrift.protocol.TField TE_FIELD_DESC = new org.apache.thrift.protocol.TField("te", org.apache.thrift.protocol.TType.STRUCT, (short)3); public InvalidRequestException ire; public UnavailableException ue; + public TimedOutException te; /** The set of fields this struct contains, along with convenience methods for finding and manipulating them. */ public enum _Fields implements org.apache.thrift.TFieldIdEnum { IRE((short)1, "ire"), - UE((short)2, "ue"); + UE((short)2, "ue"), + TE((short)3, "te"); private static final Map<String, _Fields> byName = new HashMap<String, _Fields>(); @@ -20186,6 +20196,8 @@ public class Cassandra { return IRE; case 2: // UE return UE; + case 3: // TE + return TE; default: return null; } @@ -20234,6 +20246,8 @@ public class Cassandra { new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT))); tmpMap.put(_Fields.UE, new org.apache.thrift.meta_data.FieldMetaData("ue", org.apache.thrift.TFieldRequirementType.DEFAULT, new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT))); + tmpMap.put(_Fields.TE, new org.apache.thrift.meta_data.FieldMetaData("te", org.apache.thrift.TFieldRequirementType.DEFAULT, + new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRUCT))); metaDataMap = Collections.unmodifiableMap(tmpMap); org.apache.thrift.meta_data.FieldMetaData.addStructMetaDataMap(truncate_result.class, metaDataMap); } @@ -20243,11 +20257,13 @@ public class Cassandra { public truncate_result( InvalidRequestException ire, - UnavailableException ue) + UnavailableException ue, + TimedOutException te) { this(); this.ire = ire; this.ue = ue; + this.te = te; } /** @@ -20260,6 +20276,9 @@ public class Cassandra { if (other.isSetUe()) { this.ue = new UnavailableException(other.ue); } + if (other.isSetTe()) { + this.te = new TimedOutException(other.te); + } } public truncate_result deepCopy() { @@ -20270,6 +20289,7 @@ public class Cassandra { public void clear() { this.ire = null; this.ue = null; + this.te = null; } public InvalidRequestException getIre() { @@ -20320,6 +20340,30 @@ public class Cassandra { } } + public TimedOutException getTe() { + return this.te; + } + + public truncate_result setTe(TimedOutException te) { + this.te = te; + return this; + } + + public void unsetTe() { + this.te = null; + } + + /** Returns true if field te is set (has been assigned a value) and false otherwise */ + public boolean isSetTe() { + return this.te != null; + } + + public void setTeIsSet(boolean value) { + if (!value) { + this.te = null; + } + } + public void setFieldValue(_Fields field, Object value) { switch (field) { case IRE: @@ -20338,6 +20382,14 @@ public class Cassandra { } break; + case TE: + if (value == null) { + unsetTe(); + } else { + setTe((TimedOutException)value); + } + break; + } } @@ -20349,6 +20401,9 @@ public class Cassandra { case UE: return getUe(); + case TE: + return getTe(); + } throw new IllegalStateException(); } @@ -20364,6 +20419,8 @@ public class Cassandra { return isSetIre(); case UE: return isSetUe(); + case TE: + return isSetTe(); } throw new IllegalStateException(); } @@ -20399,6 +20456,15 @@ public class Cassandra { return false; } + boolean this_present_te = true && this.isSetTe(); + boolean that_present_te = true && that.isSetTe(); + if (this_present_te || that_present_te) { + if (!(this_present_te && that_present_te)) + return false; + if (!this.te.equals(that.te)) + return false; + } + return true; } @@ -20416,6 +20482,11 @@ public class Cassandra { if (present_ue) builder.append(ue); + boolean present_te = true && (isSetTe()); + builder.append(present_te); + if (present_te) + builder.append(te); + return builder.toHashCode(); } @@ -20447,6 +20518,16 @@ public class Cassandra { return lastComparison; } } + lastComparison = Boolean.valueOf(isSetTe()).compareTo(typedOther.isSetTe()); + if (lastComparison != 0) { + return lastComparison; + } + if (isSetTe()) { + lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.te, typedOther.te); + if (lastComparison != 0) { + return lastComparison; + } + } return 0; } @@ -20480,6 +20561,14 @@ public class Cassandra { org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type); } break; + case 3: // TE + if (field.type == org.apache.thrift.protocol.TType.STRUCT) { + this.te = new TimedOutException(); + this.te.read(iprot); + } else { + org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type); + } + break; default: org.apache.thrift.protocol.TProtocolUtil.skip(iprot, field.type); } @@ -20502,6 +20591,10 @@ public class Cassandra { oprot.writeFieldBegin(UE_FIELD_DESC); this.ue.write(oprot); oprot.writeFieldEnd(); + } else if (this.isSetTe()) { + oprot.writeFieldBegin(TE_FIELD_DESC); + this.te.write(oprot); + oprot.writeFieldEnd(); } oprot.writeFieldStop(); oprot.writeStructEnd(); @@ -20527,6 +20620,14 @@ public class Cassandra { sb.append(this.ue); } first = false; + if (!first) sb.append(", "); + sb.append("te:"); + if (this.te == null) { + sb.append("null"); + } else { + sb.append(this.te); + } + first = false; sb.append(")"); return sb.toString(); } @@ -26017,8 +26118,6 @@ public class Cassandra { private void readObject(java.io.ObjectInputStream in) throws java.io.IOException, ClassNotFoundException { try { - // it doesn't seem like you should have to do this, but java serialization is wacky, and doesn't call the default constructor. - __isset_bit_vector = new BitSet(1); read(new org.apache.thrift.protocol.TCompactProtocol(new org.apache.thrift.transport.TIOStreamTransport(in))); } catch (org.apache.thrift.TException te) { throw new java.io.IOException(te); Modified: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java URL: http://svn.apache.org/viewvc/cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java?rev=1222340&r1=1222339&r2=1222340&view=diff ============================================================================== --- cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java (original) +++ cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Constants.java Thu Dec 22 16:41:21 2011 @@ -44,6 +44,6 @@ import org.slf4j.LoggerFactory; public class Constants { - public static final String VERSION = "19.22.0"; + public static final String VERSION = "19.22.1"; } Modified: cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java?rev=1222340&r1=1222339&r2=1222340&view=diff ============================================================================== --- cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java (original) +++ cassandra/trunk/src/java/org/apache/cassandra/thrift/CassandraServer.java Thu Dec 22 16:41:21 2011 @@ -1072,7 +1072,7 @@ public class CassandraServer implements throw new SchemaDisagreementException(); } - public void truncate(String cfname) throws InvalidRequestException, UnavailableException, TException + public void truncate(String cfname) throws InvalidRequestException, UnavailableException, TimedOutException, TException { logger.debug("truncating {} in {}", cfname, state().getKeyspace()); state().hasColumnFamilyAccess(cfname, Permission.WRITE); @@ -1090,7 +1090,7 @@ public class CassandraServer implements } catch (TimeoutException e) { - throw (UnavailableException) new UnavailableException().initCause(e); + throw new TimedOutException(); } catch (IOException e) {