Skip to content

Commit 9dc35b9

Browse files
committed
opt: reduce calls for get_payload_content
1 parent b4df900 commit 9dc35b9

File tree

11 files changed

+163
-167
lines changed

11 files changed

+163
-167
lines changed

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/AbstractPayload.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,10 @@ public void setSequence(long sequence) {
177177
* encode unis header
178178
*/
179179
protected int encodeHeader(byte[] bytes, int idx) {
180-
int headerLen = (int) getObUniVersionHeaderLength(getVersion(), getPayloadContentSize());
181-
System.arraycopy(encodeObUniVersionHeader(getVersion(), getPayloadContentSize()), 0, bytes,
182-
idx, headerLen);
183-
idx += headerLen;
180+
byte[] versionHeaderBytes = encodeObUniVersionHeader(getVersion(), getPayloadContentSize());
181+
System.arraycopy(versionHeaderBytes, 0, bytes,
182+
idx, versionHeaderBytes.length);
183+
idx += versionHeaderBytes.length;
184184
return idx;
185185
}
186186

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableLSOpRequest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,8 @@ public byte[] encode() {
7272
idx++;
7373

7474
// 4. encode lsOperation
75-
int len = (int) lsOperation.getPayloadSize();
76-
System.arraycopy(lsOperation.encode(), 0, bytes, idx, len);
77-
idx += len;
75+
byte[] lsOpBytes = lsOperation.encode();
76+
System.arraycopy(lsOpBytes, 0, bytes, idx, lsOpBytes.length);
7877

7978
return bytes;
8079
}

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableLSOperation.java

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -70,48 +70,48 @@ public byte[] encode() {
7070
idx += 8;
7171

7272
// 2. encode table name
73-
int len = Serialization.getNeedBytes(tableName);
74-
System.arraycopy(Serialization.encodeVString(tableName), 0, bytes, idx, len);
75-
idx += len;
73+
byte[] tableNameBytes = Serialization.encodeVString(tableName);
74+
System.arraycopy(tableNameBytes, 0, bytes, idx, tableNameBytes.length);
75+
idx += tableNameBytes.length;
7676

7777
// 3. encode table id
78-
len = Serialization.getNeedBytes(tableId);
79-
System.arraycopy(Serialization.encodeVi64(tableId), 0, bytes, idx, len);
80-
idx += len;
78+
byte[] tableIdBytes = Serialization.encodeVi64(tableId);
79+
System.arraycopy(tableIdBytes, 0, bytes, idx, tableIdBytes.length);
80+
idx += tableIdBytes.length;
8181

8282
// 4. encode rowKey names
83-
len = Serialization.getNeedBytes(rowKeyNames.size());
84-
System.arraycopy(Serialization.encodeVi64(rowKeyNames.size()), 0, bytes, idx, len);
85-
idx += len;
83+
byte[] rowKeyNameLenBytes = Serialization.encodeVi64(rowKeyNames.size());
84+
System.arraycopy(rowKeyNameLenBytes, 0, bytes, idx, rowKeyNameLenBytes.length);
85+
idx += rowKeyNameLenBytes.length;
8686
for (String rowKeyName : rowKeyNames) {
87-
len = Serialization.getNeedBytes(rowKeyName);
88-
System.arraycopy(Serialization.encodeVString(rowKeyName), 0, bytes, idx, len);
89-
idx += len;
87+
byte[] rowKeyNameBytes = Serialization.encodeVString(rowKeyName);
88+
System.arraycopy(rowKeyNameBytes, 0, bytes, idx, rowKeyNameBytes.length);
89+
idx += rowKeyNameBytes.length;
9090
}
9191

9292
// 5. encode properties names
93-
len = Serialization.getNeedBytes(propertiesNames.size());
94-
System.arraycopy(Serialization.encodeVi64(propertiesNames.size()), 0, bytes, idx, len);
95-
idx += len;
93+
byte[] propertiesNamesLenBytes = Serialization.encodeVi64(propertiesNames.size());
94+
System.arraycopy(propertiesNamesLenBytes, 0, bytes, idx, propertiesNamesLenBytes.length);
95+
idx += propertiesNamesLenBytes.length;
9696
for (String propertyName : propertiesNames) {
97-
len = Serialization.getNeedBytes(propertyName);
98-
System.arraycopy(Serialization.encodeVString(propertyName), 0, bytes, idx, len);
99-
idx += len;
97+
byte[] propertyNameByte = Serialization.encodeVString(propertyName);
98+
System.arraycopy(propertyNameByte, 0, bytes, idx, propertyNameByte.length);
99+
idx += propertyNameByte.length;
100100
}
101101

102102
// 6. encode option flag
103-
len = Serialization.getNeedBytes(optionFlag.getValue());
104-
System.arraycopy(Serialization.encodeVi64(optionFlag.getValue()), 0, bytes, idx, len);
105-
idx += len;
103+
byte[] optionFlagBytes = Serialization.encodeVi64(optionFlag.getValue());
104+
System.arraycopy(optionFlagBytes, 0, bytes, idx, optionFlagBytes.length);
105+
idx += optionFlagBytes.length;
106106

107107
// 7. encode Operation
108-
len = Serialization.getNeedBytes(tabletOperations.size());
109-
System.arraycopy(Serialization.encodeVi64(tabletOperations.size()), 0, bytes, idx, len);
110-
idx += len;
108+
byte[] tabletOperationsLenBytes = Serialization.encodeVi64(tabletOperations.size());
109+
System.arraycopy(tabletOperationsLenBytes, 0, bytes, idx, tabletOperationsLenBytes.length);
110+
idx += tabletOperationsLenBytes.length;
111111
for (ObTableTabletOp tabletOperation : tabletOperations) {
112-
len = (int) tabletOperation.getPayloadSize();
113-
System.arraycopy(tabletOperation.encode(), 0, bytes, idx, len);
114-
idx += len;
112+
byte[] tabletOperationBytes = tabletOperation.encode();
113+
System.arraycopy(tabletOperationBytes, 0, bytes, idx, tabletOperationBytes.length);
114+
idx += tabletOperationBytes.length;
115115
}
116116

117117
return bytes;

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableSingleOp.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -52,25 +52,25 @@ public byte[] encode() {
5252

5353
// 2. encode op flag
5454
long flag = singleOpFlag.getValue();
55-
int len = Serialization.getNeedBytes(flag);
56-
System.arraycopy(Serialization.encodeVi64(flag), 0, bytes, idx, len);
57-
idx += len;
55+
byte[] singleOpFlagLenBytes = Serialization.encodeVi64(flag);
56+
System.arraycopy(singleOpFlagLenBytes, 0, bytes, idx, singleOpFlagLenBytes.length);
57+
idx += singleOpFlagLenBytes.length;
5858

5959
// 3. encode single op query
6060
if (ObTableOperationType.needEncodeQuery(singleOpType)) {
61-
len = (int) query.getPayloadSize();
62-
System.arraycopy(query.encode(), 0, bytes, idx, len);
63-
idx += len;
61+
byte[] queryBytes = query.encode();
62+
System.arraycopy(queryBytes, 0, bytes, idx, queryBytes.length);
63+
idx += queryBytes.length;
6464
}
6565

6666
// 4. encode entities
67-
len = Serialization.getNeedBytes(entities.size());
68-
System.arraycopy(Serialization.encodeVi64(entities.size()), 0, bytes, idx, len);
69-
idx += len;
67+
byte[] entitiesSizeBytes = Serialization.encodeVi64(entities.size());
68+
System.arraycopy(entitiesSizeBytes, 0, bytes, idx, entitiesSizeBytes.length);
69+
idx += entitiesSizeBytes.length;
7070
for (ObTableSingleOpEntity entity : entities) {
71-
len = (int) entity.getPayloadSize();
72-
System.arraycopy(entity.encode(), 0, bytes, idx, len);
73-
idx += len;
71+
byte[] entityBytes = entity.encode();
72+
System.arraycopy(entityBytes, 0, bytes, idx, entityBytes.length);
73+
idx += entityBytes.length;
7474
}
7575

7676
return bytes;

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableSingleOpEntity.java

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -56,47 +56,47 @@ public byte[] encode() {
5656
idx = encodeHeader(bytes, idx);
5757

5858
// 1. encode rowKey bitmap
59-
int len = Serialization.getNeedBytes(rowKeyBitLen);
60-
System.arraycopy(Serialization.encodeVi64(rowKeyBitLen), 0, bytes, idx, len);
61-
idx += len;
59+
byte[] tmpBytes = Serialization.encodeVi64(rowKeyBitLen);
60+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
61+
idx += tmpBytes.length;
6262
for (byte b : rowKeyBitMap) {
6363
System.arraycopy(Serialization.encodeI8(b), 0, bytes, idx, 1);
6464
idx += 1;
6565
}
6666

6767
// 2. encode rowkey
68-
len = Serialization.getNeedBytes(rowkey.size());
69-
System.arraycopy(Serialization.encodeVi64(rowkey.size()), 0, bytes, idx, len);
70-
idx += len;
68+
tmpBytes = Serialization.encodeVi64(rowkey.size());
69+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
70+
idx += tmpBytes.length;
7171
for (ObObj obj : rowkey) {
72-
len = ObTableSerialUtil.getEncodedSize(obj);
73-
System.arraycopy(ObTableSerialUtil.encode(obj), 0, bytes, idx, len);
74-
idx += len;
72+
tmpBytes = ObTableSerialUtil.encode(obj);
73+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
74+
idx += tmpBytes.length;
7575
}
7676

7777
// 3. encode property bitmap
7878
if (ignoreEncodePropertiesColumnNames) {
79-
len = Serialization.getNeedBytes(0L);
80-
System.arraycopy(Serialization.encodeVi64(0L), 0, bytes, idx, len);
81-
idx += len;
79+
tmpBytes = Serialization.encodeVi64(0L);
80+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
81+
idx += tmpBytes.length;
8282
} else {
83-
len = Serialization.getNeedBytes(propertiesBitLen);
84-
System.arraycopy(Serialization.encodeVi64(propertiesBitLen), 0, bytes, idx, len);
85-
idx += len;
83+
tmpBytes = Serialization.encodeVi64(propertiesBitLen);
84+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
85+
idx += tmpBytes.length;
8686
for (byte b : propertiesBitMap) {
8787
System.arraycopy(Serialization.encodeI8(b), 0, bytes, idx, 1);
8888
idx += 1;
8989
}
9090
}
9191

9292
// 4. encode properties values
93-
len = Serialization.getNeedBytes(propertiesValues.size());
94-
System.arraycopy(Serialization.encodeVi64(propertiesValues.size()), 0, bytes, idx, len);
95-
idx += len;
93+
tmpBytes = Serialization.encodeVi64(propertiesValues.size());
94+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
95+
idx += tmpBytes.length;
9696
for (ObObj obj : propertiesValues) {
97-
len = ObTableSerialUtil.getEncodedSize(obj);
98-
System.arraycopy(ObTableSerialUtil.encode(obj), 0, bytes, idx, len);
99-
idx += len;
97+
tmpBytes = ObTableSerialUtil.encode(obj);
98+
System.arraycopy(tmpBytes, 0, bytes, idx, tmpBytes.length);
99+
idx += tmpBytes.length;
100100
}
101101

102102
return bytes;

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableSingleOpQuery.java

Lines changed: 27 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -48,60 +48,57 @@ public byte[] encode() {
4848
idx = encodeHeader(bytes, idx);
4949

5050
// 1. encode index name
51-
int len = Serialization.getNeedBytes(indexName);
52-
System.arraycopy(Serialization.encodeVString(indexName), 0, bytes, idx, len);
53-
idx += len;
51+
byte[] indexNameBytes = Serialization.encodeVString(indexName);
52+
System.arraycopy(indexNameBytes, 0, bytes, idx, indexNameBytes.length);
53+
idx += indexNameBytes.length;
5454

5555
// 2. encode scan ranges columns
56-
len = Serialization.getNeedBytes(scanRangeBitLen);
57-
System.arraycopy(Serialization.encodeVi64(scanRangeBitLen), 0, bytes, idx, len);
58-
idx += len;
56+
byte[] scanRangeBitLenBytes = Serialization.encodeVi64(scanRangeBitLen);
57+
System.arraycopy(scanRangeBitLenBytes, 0, bytes, idx, scanRangeBitLenBytes.length);
58+
idx += scanRangeBitLenBytes.length;
5959
for (byte b : scanRangeBitMap) {
6060
System.arraycopy(Serialization.encodeI8(b), 0, bytes, idx, 1);
6161
idx += 1;
6262
}
6363

6464
// 3. encode scan ranges
65-
len = Serialization.getNeedBytes(keyRanges.size());
66-
System.arraycopy(Serialization.encodeVi64(keyRanges.size()), 0, bytes, idx, len);
67-
idx += len;
65+
byte[] keyRangesBytes = Serialization.encodeVi64(keyRanges.size());
66+
System.arraycopy(keyRangesBytes, 0, bytes, idx, keyRangesBytes.length);
67+
idx += keyRangesBytes.length;
6868
for (ObNewRange range : keyRanges) {
69-
len = ObTableSerialUtil.getEncodedSize(range);
70-
System.arraycopy(ObTableSerialUtil.encode(range), 0, bytes, idx, len);
71-
idx += len;
69+
byte[] rangeBytes = ObTableSerialUtil.encode(range);
70+
System.arraycopy(rangeBytes, 0, bytes, idx, rangeBytes.length);
71+
idx += rangeBytes.length;
7272
}
7373

7474
// 4. encode filter string
75-
len = Serialization.getNeedBytes(filterString);
76-
System.arraycopy(Serialization.encodeVString(filterString), 0, bytes, idx, len);
77-
idx += len;
75+
byte[] filterStringBytes = Serialization.encodeVString(filterString);
76+
System.arraycopy(filterStringBytes, 0, bytes, idx, filterStringBytes.length);
77+
idx += filterStringBytes.length;
7878

7979
// encode HBase Batch Get required
8080
if (isHbaseQuery && ObGlobal.isHBaseBatchGetSupport()) {
81-
len = Serialization.getNeedBytes(selectColumns.size());
82-
System.arraycopy(Serialization.encodeVi64(selectColumns.size()), 0, bytes, idx, len);
83-
idx += len;
81+
byte[] selectColumnsLenByets = Serialization.encodeVi64(selectColumns.size());
82+
System.arraycopy(selectColumnsLenByets, 0, bytes, idx, selectColumnsLenByets.length);
83+
idx += selectColumnsLenByets.length;
8484
for (String selectColumn : selectColumns) {
85-
len = Serialization.getNeedBytes(selectColumn);
86-
System.arraycopy(Serialization.encodeVString(selectColumn), 0, bytes, idx, len);
87-
idx += len;
85+
byte[] selectColumnLenBytes = Serialization.encodeVString(selectColumn);
86+
System.arraycopy(selectColumnLenBytes, 0, bytes, idx, selectColumnLenBytes.length);
87+
idx += selectColumnLenBytes.length;
8888
}
8989

9090
System.arraycopy(Serialization.encodeI8(scanOrder.getByteValue()), 0, bytes, idx, 1);
9191
idx += 1;
9292

93-
len = (int) hTableFilter.getPayloadSize();
94-
System.arraycopy(hTableFilter.encode(), 0, bytes, idx, len);
95-
idx += len;
93+
byte[] hTableFilterLenBytes = hTableFilter.encode();
94+
System.arraycopy(hTableFilterLenBytes, 0, bytes, idx, hTableFilterLenBytes.length);
95+
idx += hTableFilterLenBytes.length;
9696

9797
if (obKVParams != null) {
98-
len = (int) obKVParams.getPayloadSize();
99-
System.arraycopy(obKVParams.encode(), 0, bytes, idx, len);
100-
idx += len;
98+
byte[] obKVParamsBytes = obKVParams.encode();
99+
System.arraycopy(obKVParamsBytes, 0, bytes, idx, obKVParamsBytes.length);
101100
} else {
102-
len = HTABLE_DUMMY_BYTES.length;
103-
System.arraycopy(HTABLE_DUMMY_BYTES, 0, bytes, idx, len);
104-
idx += len;
101+
System.arraycopy(HTABLE_DUMMY_BYTES, 0, bytes, idx, HTABLE_DUMMY_BYTES.length);
105102
}
106103
}
107104
return bytes;

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/ObTableTabletOp.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -57,18 +57,18 @@ public byte[] encode() {
5757
idx += 8;
5858

5959
// 2. encode option flag
60-
int len = Serialization.getNeedBytes(optionFlag.getValue());
61-
System.arraycopy(Serialization.encodeVi64(optionFlag.getValue()), 0, bytes, idx, len);
62-
idx += len;
60+
byte[] optionFlagLenBytes = Serialization.encodeVi64(optionFlag.getValue());
61+
System.arraycopy(optionFlagLenBytes, 0, bytes, idx, optionFlagLenBytes.length);
62+
idx += optionFlagLenBytes.length;
6363

6464
// 4. encode Operation
65-
len = Serialization.getNeedBytes(singleOperations.size());
66-
System.arraycopy(Serialization.encodeVi64(singleOperations.size()), 0, bytes, idx, len);
67-
idx += len;
65+
byte[] singleOperationsLenBytes = Serialization.encodeVi64(singleOperations.size());
66+
System.arraycopy(singleOperationsLenBytes, 0, bytes, idx, singleOperationsLenBytes.length);
67+
idx += singleOperationsLenBytes.length;
6868
for (ObTableSingleOp singleOperation : singleOperations) {
69-
len = (int) singleOperation.getPayloadSize();
70-
System.arraycopy(singleOperation.encode(), 0, bytes, idx, len);
71-
idx += len;
69+
byte[] singleOperationLenBytes = singleOperation.encode();
70+
System.arraycopy(singleOperationLenBytes, 0, bytes, idx, singleOperationLenBytes.length);
71+
idx += singleOperationLenBytes.length;
7272
}
7373

7474
return bytes;

src/main/java/com/alipay/oceanbase/rpc/protocol/payload/impl/execute/query/ObHTableFilter.java

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -61,42 +61,42 @@ public byte[] encode() {
6161
int idx = 0;
6262

6363
// 0. encode header
64-
int headerLen = (int) getObUniVersionHeaderLength(getVersion(), getPayloadContentSize());
65-
System.arraycopy(encodeObUniVersionHeader(getVersion(), getPayloadContentSize()), 0, bytes,
66-
idx, headerLen);
67-
idx += headerLen;
64+
byte[] headerBytes = encodeObUniVersionHeader(getVersion(), getPayloadContentSize());
65+
System.arraycopy(headerBytes, 0, bytes,
66+
idx, headerBytes.length);
67+
idx += headerBytes.length;
6868

6969
// 1. encode
7070
System.arraycopy(Serialization.encodeI8(isValid ? (byte) 1 : (byte) 0), 0, bytes, idx, 1);
7171
idx++;
72-
int len = Serialization.getNeedBytes(selectColumnQualifier.size());
72+
byte[] selectColumnQualifierBytes = Serialization.encodeVi64(selectColumnQualifier.size());
7373
System
74-
.arraycopy(Serialization.encodeVi64(selectColumnQualifier.size()), 0, bytes, idx, len);
75-
idx += len;
74+
.arraycopy(selectColumnQualifierBytes, 0, bytes, idx, selectColumnQualifierBytes.length);
75+
idx += selectColumnQualifierBytes.length;
7676
for (ObBytesString q : selectColumnQualifier) {
77-
len = Serialization.getNeedBytes(q);
78-
System.arraycopy(Serialization.encodeBytesString(q), 0, bytes, idx, len);
79-
idx += len;
77+
byte[] QualifierBytes = Serialization.encodeBytesString(q);
78+
System.arraycopy(QualifierBytes, 0, bytes, idx, QualifierBytes.length);
79+
idx += QualifierBytes.length;
8080
}
8181

82-
len = Serialization.getNeedBytes(minStamp);
83-
System.arraycopy(Serialization.encodeVi64(minStamp), 0, bytes, idx, len);
84-
idx += len;
85-
len = Serialization.getNeedBytes(maxStamp);
86-
System.arraycopy(Serialization.encodeVi64(maxStamp), 0, bytes, idx, len);
87-
idx += len;
88-
len = Serialization.getNeedBytes(maxVersions);
89-
System.arraycopy(Serialization.encodeVi32(maxVersions), 0, bytes, idx, len);
90-
idx += len;
91-
len = Serialization.getNeedBytes(limitPerRowPerCf);
92-
System.arraycopy(Serialization.encodeVi32(limitPerRowPerCf), 0, bytes, idx, len);
93-
idx += len;
94-
len = Serialization.getNeedBytes(offsetPerRowPerCf);
95-
System.arraycopy(Serialization.encodeVi32(offsetPerRowPerCf), 0, bytes, idx, len);
96-
idx += len;
97-
len = Serialization.getNeedBytes(filterString);
98-
System.arraycopy(Serialization.encodeBytesString(filterString), 0, bytes, idx, len);
99-
idx += len;
82+
byte[] minStampBytes = Serialization.encodeVi64(minStamp);
83+
System.arraycopy(minStampBytes, 0, bytes, idx, minStampBytes.length);
84+
idx += minStampBytes.length;
85+
byte[] maxStampBytes = Serialization.encodeVi64(maxStamp);
86+
System.arraycopy(maxStampBytes, 0, bytes, idx, maxStampBytes.length);
87+
idx += maxStampBytes.length;
88+
byte[] maxVersionsBytes = Serialization.encodeVi32(maxVersions);
89+
System.arraycopy(maxVersionsBytes, 0, bytes, idx, maxVersionsBytes.length);
90+
idx += maxVersionsBytes.length;
91+
byte[] limitPerRowPerCfBytes = Serialization.encodeVi32(limitPerRowPerCf);
92+
System.arraycopy(Serialization.encodeVi32(limitPerRowPerCf), 0, bytes, idx, limitPerRowPerCfBytes.length);
93+
idx += limitPerRowPerCfBytes.length;
94+
byte[] offsetPerRowPerCfBytes = Serialization.encodeVi32(offsetPerRowPerCf);
95+
System.arraycopy(offsetPerRowPerCfBytes, 0, bytes, idx, offsetPerRowPerCfBytes.length);
96+
idx += offsetPerRowPerCfBytes.length;
97+
byte[] filterStringBytes = Serialization.encodeBytesString(filterString);
98+
System.arraycopy(filterStringBytes, 0, bytes, idx, filterStringBytes.length);
99+
idx += filterStringBytes.length;
100100

101101
return bytes;
102102
}

0 commit comments

Comments
 (0)