|
23 | 23 | #include <chrono>
|
24 | 24 |
|
25 | 25 | #include "client_cache.h"
|
| 26 | +#include "cloud/config.h" |
26 | 27 | #include "common/compiler_util.h"
|
27 | 28 | #include "common/config.h"
|
28 | 29 | #include "common/status.h"
|
@@ -446,13 +447,26 @@ Status GroupCommitTable::_finish_group_commit_load(int64_t db_id, int64_t table_
|
446 | 447 | }
|
447 | 448 | TLoadTxnCommitResult result;
|
448 | 449 | TNetworkAddress master_addr = _exec_env->master_info()->network_address;
|
449 |
| - st = ThriftRpcHelper::rpc<FrontendServiceClient>( |
450 |
| - master_addr.hostname, master_addr.port, |
451 |
| - [&request, &result](FrontendServiceConnection& client) { |
452 |
| - client->loadTxnCommit(result, request); |
453 |
| - }, |
454 |
| - 10000L); |
455 |
| - result_status = Status::create(result.status); |
| 450 | + int retry_times = 0; |
| 451 | + while (retry_times < config::mow_stream_load_commit_retry_times) { |
| 452 | + st = ThriftRpcHelper::rpc<FrontendServiceClient>( |
| 453 | + master_addr.hostname, master_addr.port, |
| 454 | + [&request, &result](FrontendServiceConnection& client) { |
| 455 | + client->loadTxnCommit(result, request); |
| 456 | + }, |
| 457 | + 10000L); |
| 458 | + result_status = Status::create(result.status); |
| 459 | + // DELETE_BITMAP_LOCK_ERROR will be retried |
| 460 | + if (result_status.ok() || !result_status.is<ErrorCode::DELETE_BITMAP_LOCK_ERROR>()) { |
| 461 | + break; |
| 462 | + } |
| 463 | + LOG_WARNING("Failed to commit txn on group commit") |
| 464 | + .tag("label", label) |
| 465 | + .tag("txn_id", txn_id) |
| 466 | + .tag("retry_times", retry_times) |
| 467 | + .error(result_status); |
| 468 | + retry_times++; |
| 469 | + } |
456 | 470 | } else {
|
457 | 471 | // abort txn
|
458 | 472 | TLoadTxnRollbackRequest request;
|
|
0 commit comments