Skip to content

Commit 59a5c26

Browse files
GroundWumaochongxin
authored andcommitted
opt for errorMsg when execute batch in the scene of table not exist
1 parent 6bd88f6 commit 59a5c26

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientBatchOpsImpl.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -512,16 +512,18 @@ private void executeWithRetries(ObTableOperationResult[] results, Map.Entry<Long
512512

513513
Map<Long, ObPair<ObTableParam, List<ObPair<Integer, ObTableOperation>>>> currentPartitions = new HashMap<>();
514514
currentPartitions.put(entry.getKey(), entry.getValue());
515-
516-
while (retryCount < maxRetries && !success) {
515+
int errCode = ResultCodes.OB_SUCCESS.errorCode;
516+
String errMsg = null;
517+
while (retryCount <= maxRetries && !success) {
517518
boolean allPartitionsSuccess = true;
518-
519519
for (Map.Entry<Long, ObPair<ObTableParam, List<ObPair<Integer, ObTableOperation>>>> currentEntry : currentPartitions.entrySet()) {
520520
try {
521521
partitionExecute(results, currentEntry);
522522
} catch (Exception e) {
523523
if (shouldRetry(e)) {
524524
retryCount++;
525+
errCode = ((ObTableNeedFetchAllException)e).getErrorCode();
526+
errMsg = e.getMessage();
525527
List<ObTableOperation> failedOperations = extractOperations(currentEntry.getValue().getRight());
526528
currentPartitions = prepareOperations(failedOperations);
527529
allPartitionsSuccess = false;
@@ -538,7 +540,9 @@ private void executeWithRetries(ObTableOperationResult[] results, Map.Entry<Long
538540
}
539541

540542
if (!success) {
541-
throw new ObTableUnexpectedException("Failed to execute operation after retrying " + maxRetries + " times.");
543+
errMsg = "Failed to execute operation after retrying " + maxRetries + " times. Last error Msg:" +
544+
"[errCode="+ errCode +"] " + errMsg;
545+
throw new ObTableUnexpectedException(errMsg);
542546
}
543547
}
544548

src/main/java/com/alipay/oceanbase/rpc/table/ObTableClientLSBatchOpsImpl.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -627,8 +627,9 @@ private void executeWithRetries(
627627

628628
Map<Long, Map<Long, ObPair<ObTableParam, List<ObPair<Integer, ObTableSingleOp>>>>> currentPartitions = new HashMap<>();
629629
currentPartitions.put(entry.getKey(), entry.getValue());
630-
631-
while (retryCount < maxRetries && !success) {
630+
int errCode = ResultCodes.OB_SUCCESS.errorCode;
631+
String errMsg = null;
632+
while (retryCount <= maxRetries && !success) {
632633
boolean allPartitionsSuccess = true;
633634

634635
for (Map.Entry<Long, Map<Long, ObPair<ObTableParam, List<ObPair<Integer, ObTableSingleOp>>>>> currentEntry : currentPartitions.entrySet()) {
@@ -637,6 +638,8 @@ private void executeWithRetries(
637638
} catch (Exception e) {
638639
if (shouldRetry(e)) {
639640
retryCount++;
641+
errCode = ((ObTableNeedFetchAllException)e).getErrorCode();
642+
errMsg = e.getMessage();
640643
List<ObTableSingleOp> failedOperations = extractOperations(currentEntry.getValue());
641644
currentPartitions = prepareOperations(failedOperations);
642645
allPartitionsSuccess = false;
@@ -653,6 +656,8 @@ private void executeWithRetries(
653656
}
654657

655658
if (!success) {
659+
errMsg = "Failed to execute operation after retrying " + maxRetries + " times. Last error Msg:" +
660+
"[errCode="+ errCode +"] " + errMsg;
656661
throw new ObTableUnexpectedException("Failed to execute operation after retrying " + maxRetries + " times.");
657662
}
658663
}

0 commit comments

Comments
 (0)