diff --git a/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClient.java b/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClient.java
index 575044cfdf..a60aac54c1 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClient.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClient.java
@@ -42,13 +42,19 @@ public long hash(byte[] key) {
}
private PegasusTable getTable(String tableName) throws PException {
+ return getTable(tableName, 0);
+ }
+
+ private PegasusTable getTable(String tableName, int backupRequestDelayMs) throws PException {
PegasusTable table = tableMap.get(tableName);
if (table == null) {
synchronized (tableMapLock) {
table = tableMap.get(tableName);
if (table == null) {
try {
- table = new PegasusTable(this, cluster.openTable(tableName, new PegasusHasher()));
+ table =
+ new PegasusTable(
+ this, cluster.openTable(tableName, new PegasusHasher(), backupRequestDelayMs));
} catch (Throwable e) {
throw new PException(e);
}
@@ -194,6 +200,12 @@ public PegasusTableInterface openTable(String tableName) throws PException {
return getTable(tableName);
}
+ @Override
+ public PegasusTableInterface openTable(String tableName, int backupRequestDelayMs)
+ throws PException {
+ return getTable(tableName, backupRequestDelayMs);
+ }
+
@Override
public Properties getConfiguration() {
return config;
diff --git a/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClientInterface.java b/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClientInterface.java
index 84166c6440..1df0853485 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClientInterface.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/client/PegasusClientInterface.java
@@ -41,6 +41,29 @@ public interface PegasusClientInterface {
*/
public PegasusTableInterface openTable(String tableName) throws PException;
+ /**
+ * Open a table, and prepare the sessions and route-table to the replica-servers.
+ *
+ *
Please notice that pegasus support two kinds of API: 1. the client-interface way, which is
+ * provided in this class. 2. the table-interface way, which is provided by {@link
+ * PegasusTableInterface}. With the client-interface, you don't need to create
+ * PegasusTableInterface by openTable, so you can access the pegasus cluster conveniently.
+ * However, the client-interface's api also has some restrictions: 1. we don't provide async
+ * methods in client-interface. 2. the timeout in client-interface isn't as accurate as the
+ * table-interface. 3. the client-interface may throw an exception when open table fails. It means
+ * that you may need to handle this exception in every data access operation, which is annoying.
+ * 4. You can't specify a per-operation timeout. So we recommend you to use the table-interface.
+ *
+ * @param tableName the table should be exist on the server, which is created before by the system
+ * administrator
+ * @param backupRequestDelayMs the delay time to send backup request. If backupRequestDelayMs <=
+ * 0, The backup request is disabled.
+ * @return the table handler
+ * @throws PException throws exception if any error occurs.
+ */
+ public PegasusTableInterface openTable(String tableName, int backupRequestDelayMs)
+ throws PException;
+
/**
* Check value exist by key from the cluster
*
diff --git a/src/main/java/com/xiaomi/infra/pegasus/client/PegasusTable.java b/src/main/java/com/xiaomi/infra/pegasus/client/PegasusTable.java
index 1f8ffaed0a..861458a6e3 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/client/PegasusTable.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/client/PegasusTable.java
@@ -1761,7 +1761,9 @@ public void handleReplicaException(
String replicaServer;
try {
replicaServer =
- replicaConfiguration.primary.get_ip() + ":" + replicaConfiguration.primary.get_port();
+ replicaConfiguration.primaryAddress.get_ip()
+ + ":"
+ + replicaConfiguration.primaryAddress.get_port();
} catch (UnknownHostException e) {
promise.setFailure(new PException(e));
return;
diff --git a/src/main/java/com/xiaomi/infra/pegasus/operator/client_operator.java b/src/main/java/com/xiaomi/infra/pegasus/operator/client_operator.java
index c325d3c3d6..c1b0546dfe 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/operator/client_operator.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/operator/client_operator.java
@@ -10,7 +10,7 @@
import com.xiaomi.infra.pegasus.thrift.TException;
public abstract class client_operator {
- public client_operator(gpid gpid, String tableName) {
+ public client_operator(gpid gpid, String tableName, boolean enableBackupRequest) {
this.header = new ThriftHeader();
this.meta = new request_meta();
this.meta.setApp_id(gpid.get_app_id());
@@ -18,10 +18,17 @@ public client_operator(gpid gpid, String tableName) {
this.pid = gpid;
this.tableName = tableName;
this.rpc_error = new error_code();
+ this.enableBackupRequest = enableBackupRequest;
+ }
+
+ public client_operator(
+ gpid gpid, String tableName, long partitionHash, boolean enableBackupRequest) {
+ this(gpid, tableName, enableBackupRequest);
+ this.meta.setPartition_hash(partitionHash);
}
public client_operator(gpid gpid, String tableName, long partitionHash) {
- this(gpid, tableName);
+ this(gpid, tableName, false);
this.meta.setPartition_hash(partitionHash);
}
@@ -32,9 +39,12 @@ public final byte[] prepare_thrift_header(int meta_length, int body_length) {
}
public final void prepare_thrift_meta(
- com.xiaomi.infra.pegasus.thrift.protocol.TProtocol oprot, int client_timeout)
+ com.xiaomi.infra.pegasus.thrift.protocol.TProtocol oprot,
+ int client_timeout,
+ boolean isBackupRequest)
throws TException {
this.meta.setClient_timeout(client_timeout);
+ this.meta.setIs_backup_request(isBackupRequest);
this.meta.write(oprot);
}
@@ -51,6 +61,7 @@ public String getQPSCounter() {
mark = "fail";
break;
}
+
// pegasus.client.put.succ.qps
return new StringBuilder()
.append("pegasus.client.")
@@ -89,4 +100,5 @@ public abstract void recv_data(com.xiaomi.infra.pegasus.thrift.protocol.TProtoco
public gpid pid;
public String tableName; // only for metrics
public error_code rpc_error;
+ public boolean enableBackupRequest;
}
diff --git a/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_get_operator.java b/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_get_operator.java
index a99c0b9b99..f795bdfcbf 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_get_operator.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_get_operator.java
@@ -14,7 +14,7 @@
public class rrdb_get_operator extends client_operator {
public rrdb_get_operator(
com.xiaomi.infra.pegasus.base.gpid gpid, String tableName, blob request, long partitionHash) {
- super(gpid, tableName, partitionHash);
+ super(gpid, tableName, partitionHash, true);
this.request = request;
}
diff --git a/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_multi_get_operator.java b/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_multi_get_operator.java
index 859d46f315..2a5d23a815 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_multi_get_operator.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_multi_get_operator.java
@@ -16,7 +16,7 @@ public rrdb_multi_get_operator(
String tableName,
multi_get_request request,
long partitionHash) {
- super(gpid, tableName, partitionHash);
+ super(gpid, tableName, partitionHash, true);
this.request = request;
}
diff --git a/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_ttl_operator.java b/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_ttl_operator.java
index 480267c767..b4d9fc43b9 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_ttl_operator.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/operator/rrdb_ttl_operator.java
@@ -13,7 +13,7 @@
public class rrdb_ttl_operator extends client_operator {
public rrdb_ttl_operator(
com.xiaomi.infra.pegasus.base.gpid gpid, String tableName, blob request, long partitionHash) {
- super(gpid, tableName, partitionHash);
+ super(gpid, tableName, partitionHash, true);
this.request = request;
}
diff --git a/src/main/java/com/xiaomi/infra/pegasus/replication/request_meta.java b/src/main/java/com/xiaomi/infra/pegasus/replication/request_meta.java
index 6513ebc4e9..1d4e68ffc7 100644
--- a/src/main/java/com/xiaomi/infra/pegasus/replication/request_meta.java
+++ b/src/main/java/com/xiaomi/infra/pegasus/replication/request_meta.java
@@ -1,5 +1,5 @@
/**
- * Autogenerated by Thrift
+ * Autogenerated by Thrift Compiler (0.11.0)
*
*
DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
*
@@ -7,66 +7,62 @@
*/
package com.xiaomi.infra.pegasus.replication;
-import com.xiaomi.infra.pegasus.thrift.*;
-import com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData;
-import com.xiaomi.infra.pegasus.thrift.meta_data.FieldValueMetaData;
-import com.xiaomi.infra.pegasus.thrift.protocol.*;
-import com.xiaomi.infra.pegasus.thrift.scheme.IScheme;
-import com.xiaomi.infra.pegasus.thrift.scheme.SchemeFactory;
-import com.xiaomi.infra.pegasus.thrift.scheme.StandardScheme;
-import com.xiaomi.infra.pegasus.thrift.scheme.TupleScheme;
-import com.xiaomi.infra.pegasus.thrift.transport.TIOStreamTransport;
-import java.util.ArrayList;
-import java.util.BitSet;
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.EnumSet;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
+@SuppressWarnings({"cast", "rawtypes", "serial", "unchecked", "unused"})
+@javax.annotation.Generated(
+ value = "Autogenerated by Thrift Compiler (0.11.0)",
+ date = "2020-01-07")
public class request_meta
- implements TBase,
+ implements com.xiaomi.infra.pegasus.thrift.TBase,
java.io.Serializable,
Cloneable,
Comparable {
- private static final TStruct STRUCT_DESC = new TStruct("meta");
-
- private static final TField APP_ID_FIELD_DESC = new TField("app_id", TType.I32, (short) 1);
- private static final TField PARTITION_INDEX_FIELD_DESC =
- new TField("partition_index", TType.I32, (short) 2);
- private static final TField CLIENT_TIMEOUT_FIELD_DESC =
- new TField("client_timeout", TType.I32, (short) 3);
- private static final TField PARTITION_HASH_FIELD_DESC =
- new TField("partition_hash", TType.I64, (short) 4);
-
- private static final Map, SchemeFactory> schemes =
- new HashMap, SchemeFactory>();
-
- static {
- schemes.put(StandardScheme.class, new metaStandardSchemeFactory());
- schemes.put(TupleScheme.class, new metaTupleSchemeFactory());
- }
+ private static final com.xiaomi.infra.pegasus.thrift.protocol.TStruct STRUCT_DESC =
+ new com.xiaomi.infra.pegasus.thrift.protocol.TStruct("request_meta");
+
+ private static final com.xiaomi.infra.pegasus.thrift.protocol.TField APP_ID_FIELD_DESC =
+ new com.xiaomi.infra.pegasus.thrift.protocol.TField(
+ "app_id", com.xiaomi.infra.pegasus.thrift.protocol.TType.I32, (short) 1);
+ private static final com.xiaomi.infra.pegasus.thrift.protocol.TField PARTITION_INDEX_FIELD_DESC =
+ new com.xiaomi.infra.pegasus.thrift.protocol.TField(
+ "partition_index", com.xiaomi.infra.pegasus.thrift.protocol.TType.I32, (short) 2);
+ private static final com.xiaomi.infra.pegasus.thrift.protocol.TField CLIENT_TIMEOUT_FIELD_DESC =
+ new com.xiaomi.infra.pegasus.thrift.protocol.TField(
+ "client_timeout", com.xiaomi.infra.pegasus.thrift.protocol.TType.I32, (short) 3);
+ private static final com.xiaomi.infra.pegasus.thrift.protocol.TField PARTITION_HASH_FIELD_DESC =
+ new com.xiaomi.infra.pegasus.thrift.protocol.TField(
+ "partition_hash", com.xiaomi.infra.pegasus.thrift.protocol.TType.I64, (short) 4);
+ private static final com.xiaomi.infra.pegasus.thrift.protocol.TField
+ IS_BACKUP_REQUEST_FIELD_DESC =
+ new com.xiaomi.infra.pegasus.thrift.protocol.TField(
+ "is_backup_request", com.xiaomi.infra.pegasus.thrift.protocol.TType.BOOL, (short) 5);
+
+ private static final com.xiaomi.infra.pegasus.thrift.scheme.SchemeFactory
+ STANDARD_SCHEME_FACTORY = new request_metaStandardSchemeFactory();
+ private static final com.xiaomi.infra.pegasus.thrift.scheme.SchemeFactory TUPLE_SCHEME_FACTORY =
+ new request_metaTupleSchemeFactory();
public int app_id; // required
public int partition_index; // required
public int client_timeout; // required
public long partition_hash; // required
+ public boolean is_backup_request; // required
/**
* The set of fields this struct contains, along with convenience methods for finding and
* manipulating them.
*/
- public enum _Fields implements TFieldIdEnum {
+ public enum _Fields implements com.xiaomi.infra.pegasus.thrift.TFieldIdEnum {
APP_ID((short) 1, "app_id"),
PARTITION_INDEX((short) 2, "partition_index"),
CLIENT_TIMEOUT((short) 3, "client_timeout"),
- PARTITION_HASH((short) 4, "partition_hash");
+ PARTITION_HASH((short) 4, "partition_hash"),
+ IS_BACKUP_REQUEST((short) 5, "is_backup_request");
- private static final Map byName = new HashMap();
+ private static final java.util.Map byName =
+ new java.util.HashMap();
static {
- for (_Fields field : EnumSet.allOf(_Fields.class)) {
+ for (_Fields field : java.util.EnumSet.allOf(_Fields.class)) {
byName.put(field.getFieldName(), field);
}
}
@@ -82,6 +78,8 @@ public static _Fields findByThriftId(int fieldId) {
return CLIENT_TIMEOUT;
case 4: // PARTITION_HASH
return PARTITION_HASH;
+ case 5: // IS_BACKUP_REQUEST
+ return IS_BACKUP_REQUEST;
default:
return null;
}
@@ -91,19 +89,19 @@ public static _Fields findByThriftId(int fieldId) {
public static _Fields findByThriftIdOrThrow(int fieldId) {
_Fields fields = findByThriftId(fieldId);
if (fields == null)
- throw new IllegalArgumentException("Field " + fieldId + " doesn't exist!");
+ throw new java.lang.IllegalArgumentException("Field " + fieldId + " doesn't exist!");
return fields;
}
/** Find the _Fields constant that matches name, or null if its not found. */
- public static _Fields findByName(String name) {
+ public static _Fields findByName(java.lang.String name) {
return byName.get(name);
}
private final short _thriftId;
- private final String _fieldName;
+ private final java.lang.String _fieldName;
- _Fields(short thriftId, String fieldName) {
+ _Fields(short thriftId, java.lang.String fieldName) {
_thriftId = thriftId;
_fieldName = fieldName;
}
@@ -112,7 +110,7 @@ public short getThriftFieldId() {
return _thriftId;
}
- public String getFieldName() {
+ public java.lang.String getFieldName() {
return _fieldName;
}
}
@@ -122,34 +120,64 @@ public String getFieldName() {
private static final int __PARTITION_INDEX_ISSET_ID = 1;
private static final int __CLIENT_TIMEOUT_ISSET_ID = 2;
private static final int __PARTITION_HASH_ISSET_ID = 3;
+ private static final int __IS_BACKUP_REQUEST_ISSET_ID = 4;
private byte __isset_bitfield = 0;
- public static final Map<_Fields, FieldMetaData> metaDataMap;
+ public static final java.util.Map<
+ _Fields, com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData>
+ metaDataMap;
static {
- Map<_Fields, FieldMetaData> tmpMap = new EnumMap<_Fields, FieldMetaData>(_Fields.class);
+ java.util.Map<_Fields, com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData> tmpMap =
+ new java.util.EnumMap<_Fields, com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData>(
+ _Fields.class);
tmpMap.put(
_Fields.APP_ID,
- new FieldMetaData(
- "app_id", TFieldRequirementType.DEFAULT, new FieldValueMetaData(TType.I32)));
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData(
+ "app_id",
+ com.xiaomi.infra.pegasus.thrift.TFieldRequirementType.DEFAULT,
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldValueMetaData(
+ com.xiaomi.infra.pegasus.thrift.protocol.TType.I32)));
tmpMap.put(
_Fields.PARTITION_INDEX,
- new FieldMetaData(
- "partition_index", TFieldRequirementType.DEFAULT, new FieldValueMetaData(TType.I32)));
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData(
+ "partition_index",
+ com.xiaomi.infra.pegasus.thrift.TFieldRequirementType.DEFAULT,
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldValueMetaData(
+ com.xiaomi.infra.pegasus.thrift.protocol.TType.I32)));
tmpMap.put(
_Fields.CLIENT_TIMEOUT,
- new FieldMetaData(
- "client_timeout", TFieldRequirementType.DEFAULT, new FieldValueMetaData(TType.I32)));
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData(
+ "client_timeout",
+ com.xiaomi.infra.pegasus.thrift.TFieldRequirementType.DEFAULT,
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldValueMetaData(
+ com.xiaomi.infra.pegasus.thrift.protocol.TType.I32)));
tmpMap.put(
_Fields.PARTITION_HASH,
- new FieldMetaData(
- "partition_hash", TFieldRequirementType.DEFAULT, new FieldValueMetaData(TType.I64)));
- metaDataMap = Collections.unmodifiableMap(tmpMap);
- FieldMetaData.addStructMetaDataMap(request_meta.class, metaDataMap);
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData(
+ "partition_hash",
+ com.xiaomi.infra.pegasus.thrift.TFieldRequirementType.DEFAULT,
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldValueMetaData(
+ com.xiaomi.infra.pegasus.thrift.protocol.TType.I64)));
+ tmpMap.put(
+ _Fields.IS_BACKUP_REQUEST,
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData(
+ "is_backup_request",
+ com.xiaomi.infra.pegasus.thrift.TFieldRequirementType.DEFAULT,
+ new com.xiaomi.infra.pegasus.thrift.meta_data.FieldValueMetaData(
+ com.xiaomi.infra.pegasus.thrift.protocol.TType.BOOL)));
+ metaDataMap = java.util.Collections.unmodifiableMap(tmpMap);
+ com.xiaomi.infra.pegasus.thrift.meta_data.FieldMetaData.addStructMetaDataMap(
+ request_meta.class, metaDataMap);
}
public request_meta() {}
- public request_meta(int app_id, int partition_index, int client_timeout, long partition_hash) {
+ public request_meta(
+ int app_id,
+ int partition_index,
+ int client_timeout,
+ long partition_hash,
+ boolean is_backup_request) {
this();
this.app_id = app_id;
setApp_idIsSet(true);
@@ -159,6 +187,8 @@ public request_meta(int app_id, int partition_index, int client_timeout, long pa
setClient_timeoutIsSet(true);
this.partition_hash = partition_hash;
setPartition_hashIsSet(true);
+ this.is_backup_request = is_backup_request;
+ setIs_backup_requestIsSet(true);
}
/** Performs a deep copy on other. */
@@ -168,6 +198,7 @@ public request_meta(request_meta other) {
this.partition_index = other.partition_index;
this.client_timeout = other.client_timeout;
this.partition_hash = other.partition_hash;
+ this.is_backup_request = other.is_backup_request;
}
public request_meta deepCopy() {
@@ -184,6 +215,8 @@ public void clear() {
this.client_timeout = 0;
setPartition_hashIsSet(false);
this.partition_hash = 0;
+ setIs_backup_requestIsSet(false);
+ this.is_backup_request = false;
}
public int getApp_id() {
@@ -197,16 +230,20 @@ public request_meta setApp_id(int app_id) {
}
public void unsetApp_id() {
- __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __APP_ID_ISSET_ID);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.clearBit(__isset_bitfield, __APP_ID_ISSET_ID);
}
/** Returns true if field app_id is set (has been assigned a value) and false otherwise */
public boolean isSetApp_id() {
- return EncodingUtils.testBit(__isset_bitfield, __APP_ID_ISSET_ID);
+ return com.xiaomi.infra.pegasus.thrift.EncodingUtils.testBit(
+ __isset_bitfield, __APP_ID_ISSET_ID);
}
public void setApp_idIsSet(boolean value) {
- __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __APP_ID_ISSET_ID, value);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.setBit(
+ __isset_bitfield, __APP_ID_ISSET_ID, value);
}
public int getPartition_index() {
@@ -220,18 +257,23 @@ public request_meta setPartition_index(int partition_index) {
}
public void unsetPartition_index() {
- __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PARTITION_INDEX_ISSET_ID);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.clearBit(
+ __isset_bitfield, __PARTITION_INDEX_ISSET_ID);
}
/**
* Returns true if field partition_index is set (has been assigned a value) and false otherwise
*/
public boolean isSetPartition_index() {
- return EncodingUtils.testBit(__isset_bitfield, __PARTITION_INDEX_ISSET_ID);
+ return com.xiaomi.infra.pegasus.thrift.EncodingUtils.testBit(
+ __isset_bitfield, __PARTITION_INDEX_ISSET_ID);
}
public void setPartition_indexIsSet(boolean value) {
- __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PARTITION_INDEX_ISSET_ID, value);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.setBit(
+ __isset_bitfield, __PARTITION_INDEX_ISSET_ID, value);
}
public int getClient_timeout() {
@@ -245,16 +287,21 @@ public request_meta setClient_timeout(int client_timeout) {
}
public void unsetClient_timeout() {
- __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __CLIENT_TIMEOUT_ISSET_ID);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.clearBit(
+ __isset_bitfield, __CLIENT_TIMEOUT_ISSET_ID);
}
/** Returns true if field client_timeout is set (has been assigned a value) and false otherwise */
public boolean isSetClient_timeout() {
- return EncodingUtils.testBit(__isset_bitfield, __CLIENT_TIMEOUT_ISSET_ID);
+ return com.xiaomi.infra.pegasus.thrift.EncodingUtils.testBit(
+ __isset_bitfield, __CLIENT_TIMEOUT_ISSET_ID);
}
public void setClient_timeoutIsSet(boolean value) {
- __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __CLIENT_TIMEOUT_ISSET_ID, value);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.setBit(
+ __isset_bitfield, __CLIENT_TIMEOUT_ISSET_ID, value);
}
public long getPartition_hash() {
@@ -268,25 +315,60 @@ public request_meta setPartition_hash(long partition_hash) {
}
public void unsetPartition_hash() {
- __isset_bitfield = EncodingUtils.clearBit(__isset_bitfield, __PARTITION_HASH_ISSET_ID);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.clearBit(
+ __isset_bitfield, __PARTITION_HASH_ISSET_ID);
}
/** Returns true if field partition_hash is set (has been assigned a value) and false otherwise */
public boolean isSetPartition_hash() {
- return EncodingUtils.testBit(__isset_bitfield, __PARTITION_HASH_ISSET_ID);
+ return com.xiaomi.infra.pegasus.thrift.EncodingUtils.testBit(
+ __isset_bitfield, __PARTITION_HASH_ISSET_ID);
}
public void setPartition_hashIsSet(boolean value) {
- __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __PARTITION_HASH_ISSET_ID, value);
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.setBit(
+ __isset_bitfield, __PARTITION_HASH_ISSET_ID, value);
}
- public void setFieldValue(_Fields field, Object value) {
+ public boolean isIs_backup_request() {
+ return this.is_backup_request;
+ }
+
+ public request_meta setIs_backup_request(boolean is_backup_request) {
+ this.is_backup_request = is_backup_request;
+ setIs_backup_requestIsSet(true);
+ return this;
+ }
+
+ public void unsetIs_backup_request() {
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.clearBit(
+ __isset_bitfield, __IS_BACKUP_REQUEST_ISSET_ID);
+ }
+
+ /**
+ * Returns true if field is_backup_request is set (has been assigned a value) and false otherwise
+ */
+ public boolean isSetIs_backup_request() {
+ return com.xiaomi.infra.pegasus.thrift.EncodingUtils.testBit(
+ __isset_bitfield, __IS_BACKUP_REQUEST_ISSET_ID);
+ }
+
+ public void setIs_backup_requestIsSet(boolean value) {
+ __isset_bitfield =
+ com.xiaomi.infra.pegasus.thrift.EncodingUtils.setBit(
+ __isset_bitfield, __IS_BACKUP_REQUEST_ISSET_ID, value);
+ }
+
+ public void setFieldValue(_Fields field, java.lang.Object value) {
switch (field) {
case APP_ID:
if (value == null) {
unsetApp_id();
} else {
- setApp_id((Integer) value);
+ setApp_id((java.lang.Integer) value);
}
break;
@@ -294,7 +376,7 @@ public void setFieldValue(_Fields field, Object value) {
if (value == null) {
unsetPartition_index();
} else {
- setPartition_index((Integer) value);
+ setPartition_index((java.lang.Integer) value);
}
break;
@@ -302,7 +384,7 @@ public void setFieldValue(_Fields field, Object value) {
if (value == null) {
unsetClient_timeout();
} else {
- setClient_timeout((Integer) value);
+ setClient_timeout((java.lang.Integer) value);
}
break;
@@ -310,13 +392,21 @@ public void setFieldValue(_Fields field, Object value) {
if (value == null) {
unsetPartition_hash();
} else {
- setPartition_hash((Long) value);
+ setPartition_hash((java.lang.Long) value);
+ }
+ break;
+
+ case IS_BACKUP_REQUEST:
+ if (value == null) {
+ unsetIs_backup_request();
+ } else {
+ setIs_backup_request((java.lang.Boolean) value);
}
break;
}
}
- public Object getFieldValue(_Fields field) {
+ public java.lang.Object getFieldValue(_Fields field) {
switch (field) {
case APP_ID:
return getApp_id();
@@ -329,8 +419,11 @@ public Object getFieldValue(_Fields field) {
case PARTITION_HASH:
return getPartition_hash();
+
+ case IS_BACKUP_REQUEST:
+ return isIs_backup_request();
}
- throw new IllegalStateException();
+ throw new java.lang.IllegalStateException();
}
/**
@@ -339,7 +432,7 @@ public Object getFieldValue(_Fields field) {
*/
public boolean isSet(_Fields field) {
if (field == null) {
- throw new IllegalArgumentException();
+ throw new java.lang.IllegalArgumentException();
}
switch (field) {
@@ -351,12 +444,14 @@ public boolean isSet(_Fields field) {
return isSetClient_timeout();
case PARTITION_HASH:
return isSetPartition_hash();
+ case IS_BACKUP_REQUEST:
+ return isSetIs_backup_request();
}
- throw new IllegalStateException();
+ throw new java.lang.IllegalStateException();
}
@Override
- public boolean equals(Object that) {
+ public boolean equals(java.lang.Object that) {
if (that == null) return false;
if (that instanceof request_meta) return this.equals((request_meta) that);
return false;
@@ -364,6 +459,7 @@ public boolean equals(Object that) {
public boolean equals(request_meta that) {
if (that == null) return false;
+ if (this == that) return true;
boolean this_present_app_id = true;
boolean that_present_app_id = true;
@@ -393,30 +489,32 @@ public boolean equals(request_meta that) {
if (this.partition_hash != that.partition_hash) return false;
}
+ boolean this_present_is_backup_request = true;
+ boolean that_present_is_backup_request = true;
+ if (this_present_is_backup_request || that_present_is_backup_request) {
+ if (!(this_present_is_backup_request && that_present_is_backup_request)) return false;
+ if (this.is_backup_request != that.is_backup_request) return false;
+ }
+
return true;
}
@Override
public int hashCode() {
- List