39
39
#include " util/file_util.h"
40
40
#include " util/http_sender.h"
41
41
#include " util/string_util.h"
42
-
42
+ # include " util/retry_util.h "
43
43
namespace qcloud_cos {
44
44
45
45
bool ObjectOp::IsObjectExist (const std::string& bucket_name,
@@ -49,7 +49,7 @@ bool ObjectOp::IsObjectExist(const std::string& bucket_name,
49
49
CosResult result = HeadObject (req, &resp);
50
50
if (result.IsSucc ()) {
51
51
return true ;
52
- }else if (UseDefaultDomain ()){
52
+ }else if (UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result) ){
53
53
result = HeadObject (req, &resp, COS_CHANGE_BACKUP_DOMAIN);
54
54
if (result.IsSucc ()) {
55
55
return true ;
@@ -372,7 +372,7 @@ CosResult ObjectOp::GetObject(const GetObjectByFileReq& req,
372
372
handler->UpdateStatus (TransferStatus::COMPLETED, result, resp->GetHeaders (),
373
373
resp->GetBody ());
374
374
} else if (handler) {
375
- if (!change_backup_domain && UseDefaultDomain ()){
375
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result) ){
376
376
handler->UpdateStatus (TransferStatus::RETRY, result);
377
377
}else {
378
378
handler->UpdateStatus (TransferStatus::FAILED, result);
@@ -384,7 +384,7 @@ CosResult ObjectOp::GetObject(const GetObjectByFileReq& req,
384
384
CosResult ObjectOp::MultiGetObject (const GetObjectByFileReq& req,
385
385
GetObjectByFileResp* resp) {
386
386
CosResult result = MultiThreadDownload (req, resp);
387
- if (UseDefaultDomain () && (!result. IsSucc ( ))){
387
+ if (UseDefaultDomain () && (RetryUtil::ShouldRetryWithChangeDomain (result ))){
388
388
result = MultiThreadDownload (req, resp, nullptr , COS_CHANGE_BACKUP_DOMAIN);
389
389
}
390
390
return result;
@@ -444,7 +444,7 @@ CosResult ObjectOp::PutObject(const PutObjectByStreamReq& req,
444
444
handler->UpdateStatus (TransferStatus::COMPLETED, result, resp->GetHeaders (),
445
445
resp->GetBody ());
446
446
} else if (handler) {
447
- if (!change_backup_domain && UseDefaultDomain ()){
447
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result) ){
448
448
handler->UpdateStatus (TransferStatus::RETRY, result);
449
449
}else {
450
450
handler->UpdateStatus (TransferStatus::FAILED, result);
@@ -516,7 +516,7 @@ CosResult ObjectOp::PutObject(const PutObjectByFileReq& req,
516
516
handler->UpdateStatus (TransferStatus::COMPLETED, result, resp->GetHeaders (),
517
517
resp->GetBody ());
518
518
} else if (handler) {
519
- if (!change_backup_domain && UseDefaultDomain ()){
519
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result) ){
520
520
handler->UpdateStatus (TransferStatus::RETRY, result);
521
521
}else {
522
522
handler->UpdateStatus (TransferStatus::FAILED, result);
@@ -620,7 +620,7 @@ CosResult ObjectOp::MultiUploadObject(const PutObjectByFileReq& req,
620
620
std::string err_msg = " Init multipart upload failed" ;
621
621
SetResultAndLogError (init_result, err_msg);
622
622
if (handler) {
623
- if (!change_backup_domain && UseDefaultDomain ()){
623
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (init_result) ){
624
624
handler->UpdateStatus (TransferStatus::RETRY, init_result);
625
625
}else {
626
626
handler->UpdateStatus (TransferStatus::FAILED, init_result);
@@ -678,7 +678,7 @@ CosResult ObjectOp::MultiUploadObject(const PutObjectByFileReq& req,
678
678
// return abort_result;
679
679
// }
680
680
if (handler) {
681
- if (!change_backup_domain && UseDefaultDomain ()){
681
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (upload_result) ){
682
682
handler->UpdateStatus (TransferStatus::RETRY, upload_result);
683
683
}else {
684
684
handler->UpdateStatus (TransferStatus::FAILED, upload_result);
@@ -731,7 +731,7 @@ CosResult ObjectOp::MultiUploadObject(const PutObjectByFileReq& req,
731
731
}
732
732
} else {
733
733
if (handler) {
734
- if (!change_backup_domain && UseDefaultDomain ()){
734
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (comp_result) ){
735
735
handler->UpdateStatus (TransferStatus::RETRY);
736
736
}else {
737
737
handler->UpdateStatus (TransferStatus::FAILED);
@@ -1187,7 +1187,7 @@ ObjectOp::MultiThreadDownload(const GetObjectByFileReq& req,
1187
1187
SetResultAndLogError (
1188
1188
head_result, " failed to get object length before downloading object." );
1189
1189
if (handler) {
1190
- if (!change_backup_domain && UseDefaultDomain ()){
1190
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result) ){
1191
1191
handler->UpdateStatus (TransferStatus::RETRY, head_result);
1192
1192
}else {
1193
1193
handler->UpdateStatus (TransferStatus::FAILED, head_result);
@@ -1809,7 +1809,7 @@ CosResult ObjectOp::AppendObject(const AppendObjectReq& req,
1809
1809
AppendObjectResp* resp) {
1810
1810
CosResult result = PutObject (static_cast <PutObjectByStreamReq>(req),
1811
1811
static_cast <PutObjectByStreamResp*>(resp));
1812
- if (UseDefaultDomain () && !result. IsSucc ( )){
1812
+ if (UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result )){
1813
1813
result = PutObject (static_cast <PutObjectByStreamReq>(req),
1814
1814
static_cast <PutObjectByStreamResp*>(resp),
1815
1815
nullptr ,
@@ -1937,7 +1937,7 @@ CosResult ObjectOp::ResumableGetObject(const GetObjectByFileReq& req,
1937
1937
SetResultAndLogError (
1938
1938
head_result, " failed to get object length before downloading object." );
1939
1939
if (handler) {
1940
- if (!change_backup_domain && UseDefaultDomain ()){
1940
+ if (!change_backup_domain && UseDefaultDomain () && RetryUtil::ShouldRetryWithChangeDomain (result) ){
1941
1941
handler->UpdateStatus (TransferStatus::RETRY, head_result);
1942
1942
}else {
1943
1943
handler->UpdateStatus (TransferStatus::FAILED, head_result);
0 commit comments