Skip to content

Commit deb2553

Browse files
authored
Merge pull request #59 from volcengine/release_2.6.18
2.6.18 GetObjectToFile interface stability reinforcement
2 parents a6db68c + 82d27fc commit deb2553

File tree

10 files changed

+44
-15
lines changed

10 files changed

+44
-15
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## Release Note
22

3+
### 2025.8.23 Version 2.6.18
4+
- GetObjectToFile 接口稳定性加固
5+
36
### 2025.8.4 Version 2.6.17
47
- 支持 deleteObject 接口携带 if-match
58
- 支持事件通知回调

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.1)
22

33
project(ve-tos-cpp-sdk
4-
VERSION 2.6.17
4+
VERSION 2.6.18
55
LANGUAGES CXX)
66

77
# project settings

example/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.1)
22
project(ve-tos-cpp-sdk-example
3-
VERSION 2.6.17
3+
VERSION 2.6.18
44
LANGUAGES CXX)
55

66
add_executable(${PROJECT_NAME} example.cc)

sdk/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.1)
22
project(ve-tos-cpp-sdk-lib
3-
VERSION 2.6.17
3+
VERSION 2.6.18
44
LANGUAGES CXX)
55
set(SDK_HEADER
66
include/auth/Credential.h

sdk/include/TosClient.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@
5757
#include "model/object/ModifyObjectInput.h"
5858
#include "model/object/ModifyObjectOutput.h"
5959
namespace VolcengineTos {
60-
static const char* TOS_SDK_VERSION = "v2.6.17";
60+
static const char* TOS_SDK_VERSION = "v2.6.18";
6161
#ifdef WIN32
6262
static const char* PLATFORM_NAME = "windows";
6363
#elif __linux__

sdk/src/TosClientImpl.cc

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7534,12 +7534,21 @@ bool TosClientImpl::checkShouldRetry(const std::shared_ptr<TosRequest>& request,
75347534
if (resCode == 429 || resCode >= 500 || curlErrShouldRetry) {
75357535
if (request->getMethod() == http::MethodGet || request->getMethod() == http::MethodHead) {
75367536
if (request->getMethod() == http::MethodGet) {
7537-
auto content_ = request->getContent();
7538-
if (content_ != nullptr) {
7537+
7538+
if (auto content_ = request->getContent(); content_ != nullptr) {
75397539
int64_t contentLength_ = calContentLength(content_);
75407540
if (contentLength_ != 0) {
75417541
return false;
75427542
}
7543+
} else if (auto fileContent_ = request->getFileContent(); fileContent_ != nullptr) {
7544+
// 重置流状态
7545+
fileContent_->clear();
7546+
// 重置写位置到开头
7547+
fileContent_->seekp(0, std::ios::beg);
7548+
7549+
if (fileContent_->bad() || fileContent_->fail()) {
7550+
return false;
7551+
}
75437552
}
75447553
}
75457554
return true;

sdk/src/transport/http/HttpClient.cc

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ struct ResourceManager {
2929

3030
static void processHandler(const DataTransferStatusChange& handler, int64_t consumedBytes, int64_t totalBytes,
3131
int64_t rwOnceBytes, DataTransferType type, void* userData) {
32+
if (!handler){
33+
return;
34+
}
3235
DataTransferStatus dataTransferStatus{consumedBytes, totalBytes, rwOnceBytes, type, userData};
3336
auto data = std::make_shared<DataTransferStatus>(dataTransferStatus);
3437
handler(data);
@@ -38,9 +41,12 @@ static size_t sendBody(char* ptr, size_t size, size_t nmemb, void* data) {
3841
auto* resourceMan = static_cast<ResourceManager*>(data);
3942

4043
if (resourceMan == nullptr || resourceMan->httpReq == nullptr) {
41-
resourceMan->dataTransferType = 4;
42-
processHandler(resourceMan->progress, resourceMan->send, resourceMan->total, 0, resourceMan->dataTransferType,
43-
resourceMan->userData);
44+
if (resourceMan != nullptr) {
45+
resourceMan->dataTransferType = 4;
46+
processHandler(resourceMan->progress, resourceMan->send, resourceMan->total, 0, resourceMan->dataTransferType,
47+
resourceMan->userData);
48+
}
49+
4450
return 0;
4551
}
4652
std::shared_ptr<std::iostream>& content = resourceMan->httpReq->Body();
@@ -95,6 +101,8 @@ static size_t recvBody(char* ptr, size_t size, size_t nmemb, void* userdata) {
95101
auto* resourceMan = static_cast<ResourceManager*>(userdata);
96102
const size_t wanted = size * nmemb;
97103

104+
auto logger = LogUtils::GetLogger();
105+
98106
// 第一次回调
99107
if (resourceMan->progress && resourceMan->dataTransferType == 1) {
100108
if (resourceMan->total == -1) {
@@ -117,9 +125,12 @@ static size_t recvBody(char* ptr, size_t size, size_t nmemb, void* userdata) {
117125
}
118126

119127
if (resourceMan == nullptr || resourceMan->httpResp == nullptr || wanted == 0) {
120-
resourceMan->dataTransferType = 4;
121-
processHandler(resourceMan->progress, resourceMan->send, resourceMan->total, 0, resourceMan->dataTransferType,
122-
resourceMan->userData);
128+
if (resourceMan != nullptr) {
129+
resourceMan->dataTransferType = 4;
130+
processHandler(resourceMan->progress, resourceMan->send, resourceMan->total, 0, resourceMan->dataTransferType,
131+
resourceMan->userData);
132+
}
133+
123134
return -1;
124135
}
125136
// 第一次receive response body , 初始化state->resposne->body
@@ -136,6 +147,9 @@ static size_t recvBody(char* ptr, size_t size, size_t nmemb, void* userdata) {
136147
}
137148
std::shared_ptr<std::iostream>& content = resourceMan->httpResp->Body();
138149
if (content == nullptr || content->fail()) {
150+
if (logger != nullptr) {
151+
logger->error("recvBody content init err");
152+
}
139153
resourceMan->dataTransferType = 4;
140154
processHandler(resourceMan->progress, resourceMan->send, resourceMan->total, 0, resourceMan->dataTransferType,
141155
resourceMan->userData);
@@ -147,6 +161,9 @@ static size_t recvBody(char* ptr, size_t size, size_t nmemb, void* userdata) {
147161
// }
148162

149163
if (content->bad()) {
164+
if (logger != nullptr) {
165+
logger->error("recvBody content write err, please check disk space, file permission, network, etc.");
166+
}
150167
resourceMan->dataTransferType = 4;
151168
processHandler(resourceMan->progress, resourceMan->send, resourceMan->total, 0, resourceMan->dataTransferType,
152169
resourceMan->userData);

test/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.1)
22
project(ve-tos-cpp-sdk-test
3-
VERSION 2.6.17
3+
VERSION 2.6.18
44
LANGUAGES CXX)
55

66
include(FetchContent)

test/src/Object/ObjectPutGetTest.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ObjectPutGetTest : public ::testing::Test {
2020
conf.maxRetryCount = 0;
2121
conf.userAgentProductName = "tos";
2222
conf.userAgentSoftName="cxxSdk";
23-
conf.userAgentSoftVersion = "2.6.17";
23+
conf.userAgentSoftVersion = "2.6.18";
2424
conf.userAgentCustomizedKeyValues = {{"key1", "value1"}, {"key2", "value2"}};
2525
cliV2 = std::make_shared<TosClientV2>(TestConfig::Region, TestConfig::Ak, TestConfig::Sk, conf);
2626
bkt_name = TestUtils::GetBucketName(TestConfig::TestPrefix);

test/src/Object/ObjectRenameTest.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ class ObjectRenameTest : public ::testing::Test {
2020
conf.maxRetryCount = 0;
2121
conf.userAgentProductName = "tos";
2222
conf.userAgentSoftName="cxxSdk";
23-
conf.userAgentSoftVersion = "2.6.17";
23+
conf.userAgentSoftVersion = "2.6.18";
2424
conf.userAgentCustomizedKeyValues = {{"key1", "value1"}, {"key2", "value2"}};
2525
cliV2 = std::make_shared<TosClientV2>(TestConfig::Region, TestConfig::Ak, TestConfig::Sk, conf);
2626
bkt_name = TestUtils::GetBucketName(TestConfig::TestPrefix);

0 commit comments

Comments
 (0)