@@ -165,7 +165,8 @@ private void addObTableClientOperation(ObTableOperationType type, Object[] rowke
165165 public List <Object > execute () throws Exception {
166166 // consistent can not be sure
167167 List <Object > results = new ArrayList <Object >(batchOperation .getTableOperations ().size ());
168- for (ObTableOperationResult result : executeInternal ().getResults ()) {
168+ List <ObTableOperationResult > batchResults = executeInternal ().getResults ();
169+ for (ObTableOperationResult result : batchResults ) {
169170 int errCode = result .getHeader ().getErrno ();
170171 if (errCode == ResultCodes .OB_SUCCESS .errorCode ) {
171172 switch (result .getOperationType ()) {
@@ -192,7 +193,8 @@ public List<Object> execute() throws Exception {
192193 public List <Object > executeWithResult () throws Exception {
193194 // consistent can not be sure
194195 List <Object > results = new ArrayList <Object >(batchOperation .getTableOperations ().size ());
195- for (ObTableOperationResult result : executeInternal ().getResults ()) {
196+ List <ObTableOperationResult > batchResults = executeInternal ().getResults ();
197+ for (ObTableOperationResult result : batchResults ) {
196198 int errCode = result .getHeader ().getErrno ();
197199 if (errCode == ResultCodes .OB_SUCCESS .errorCode ) {
198200 switch (result .getOperationType ()) {
@@ -231,32 +233,22 @@ private Object[] calculateRowKey(ObTableOperation operation) {
231233 return rowKey ;
232234 }
233235
234- public List <ObTableOperation > extractOperations (List <ObPair <Integer , ObTableOperation >> operationsPairs ) {
235- List <ObTableOperation > operations = new ArrayList <>(operationsPairs .size ());
236- for (ObPair <Integer , ObTableOperation > pair : operationsPairs ) {
237- operations .add (pair .getRight ());
238- }
239- return operations ;
240- }
241-
242- public Map <Long , ObPair <ObTableParam , List <ObPair <Integer , ObTableOperation >>>> prepareOperations (List <ObTableOperation > operations ) throws Exception {
236+ public Map <Long , ObPair <ObTableParam , List <ObPair <Integer , ObTableOperation >>>> prepareOperations (List <ObPair <Integer , ObTableOperation >> operations ) throws Exception {
243237 Map <Long , ObPair <ObTableParam , List <ObPair <Integer , ObTableOperation >>>> partitionOperationsMap = new HashMap <>();
244238
245239 if (obTableClient .isOdpMode ()) {
246240 ObPair <ObTableParam , List <ObPair <Integer , ObTableOperation >>> obTableOperations = new ObPair <>(
247241 new ObTableParam (obTableClient .getOdpTable ()),
248242 new ArrayList <>());
249243 for (int i = 0 ; i < operations .size (); i ++) {
250- ObTableOperation operation = operations .get (i );
251- obTableOperations .getRight ().add (
252- new ObPair <>(i , operation ));
244+ obTableOperations .getRight ().add (operations .get (i ));
253245 }
254246 partitionOperationsMap .put (0L , obTableOperations );
255247 return partitionOperationsMap ;
256248 }
257249
258250 for (int i = 0 ; i < operations .size (); i ++) {
259- ObTableOperation operation = operations .get (i );
251+ ObTableOperation operation = operations .get (i ). getRight () ;
260252 ObRowKey rowKeyObject = operation .getEntity ().getRowKey ();
261253 int rowKeySize = rowKeyObject .getObjs ().size ();
262254 Object [] rowKey = new Object [rowKeySize ];
@@ -269,7 +261,7 @@ public Map<Long, ObPair<ObTableParam, List<ObPair<Integer, ObTableOperation>>>>
269261 ObPair <ObTableParam , List <ObPair <Integer , ObTableOperation >>> obTableOperations = partitionOperationsMap
270262 .computeIfAbsent (tableParam .getPartId (), k -> new ObPair <>(
271263 tableParam , new ArrayList <>()));
272- obTableOperations .getRight ().add (new ObPair <>( i , operation ));
264+ obTableOperations .getRight ().add (operations . get ( i ));
273265 }
274266 return partitionOperationsMap ;
275267 }
@@ -278,7 +270,11 @@ public Map<Long, ObPair<ObTableParam, List<ObPair<Integer, ObTableOperation>>>>
278270 throws Exception {
279271 // consistent can not be sure
280272 List <ObTableOperation > operations = batchOperation .getTableOperations ();
281- return prepareOperations (operations );
273+ List <ObPair <Integer , ObTableOperation >> operationIdx = new ArrayList <>();
274+ for (int i = 0 ; i < operations .size (); ++i ) {
275+ operationIdx .add (new ObPair <>(i , operations .get (i )));
276+ }
277+ return prepareOperations (operationIdx );
282278 }
283279
284280 /*
@@ -574,8 +570,7 @@ private void executeWithRetries(ObTableOperationResult[] results, Map.Entry<Long
574570 retryCount ++;
575571 errCode = ((ObTableNeedFetchMetaException )e ).getErrorCode ();
576572 errMsg = e .getMessage ();
577- List <ObTableOperation > failedOperations = extractOperations (currentEntry .getValue ().getRight ());
578- currentPartitions = prepareOperations (failedOperations );
573+ currentPartitions = prepareOperations (currentEntry .getValue ().getRight ());
579574 allPartitionsSuccess = false ;
580575 break ;
581576 } else {
0 commit comments