Merge pull request #23704 from taosdata/fix/TD-27313
fix(cos/multipart): close infile fd in exception
This commit is contained in:
commit
223c0ffa21
|
@ -497,12 +497,6 @@ int32_t s3PutObjectFromFile2(const char *file, const char *object) {
|
||||||
S3_put_object(&bucketContext, key, contentLength, &putProperties, 0, 0, &putObjectHandler, &data);
|
S3_put_object(&bucketContext, key, contentLength, &putProperties, 0, 0, &putObjectHandler, &data);
|
||||||
} while (S3_status_is_retryable(data.status) && should_retry());
|
} while (S3_status_is_retryable(data.status) && should_retry());
|
||||||
|
|
||||||
if (data.infileFD) {
|
|
||||||
taosCloseFile(&data.infileFD);
|
|
||||||
} else if (data.gb) {
|
|
||||||
growbuffer_destroy(data.gb);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (data.status != S3StatusOK) {
|
if (data.status != S3StatusOK) {
|
||||||
s3PrintError(__func__, data.status, data.err_msg);
|
s3PrintError(__func__, data.status, data.err_msg);
|
||||||
code = TAOS_SYSTEM_ERROR(EIO);
|
code = TAOS_SYSTEM_ERROR(EIO);
|
||||||
|
@ -521,7 +515,12 @@ int32_t s3PutObjectFromFile2(const char *file, const char *object) {
|
||||||
// div round up
|
// div round up
|
||||||
int seq;
|
int seq;
|
||||||
uint64_t chunk_size = MULTIPART_CHUNK_SIZE >> 7;
|
uint64_t chunk_size = MULTIPART_CHUNK_SIZE >> 7;
|
||||||
int totalSeq = ((contentLength + chunk_size - 1) / chunk_size);
|
int totalSeq = (contentLength + chunk_size - 1) / chunk_size;
|
||||||
|
const int max_part_num = 1000;
|
||||||
|
if (totalSeq > max_part_num) {
|
||||||
|
chunk_size = (contentLength + max_part_num - contentLength % max_part_num) / max_part_num;
|
||||||
|
totalSeq = (contentLength + chunk_size - 1) / chunk_size;
|
||||||
|
}
|
||||||
|
|
||||||
MultipartPartData partData;
|
MultipartPartData partData;
|
||||||
memset(&partData, 0, sizeof(MultipartPartData));
|
memset(&partData, 0, sizeof(MultipartPartData));
|
||||||
|
@ -622,6 +621,12 @@ int32_t s3PutObjectFromFile2(const char *file, const char *object) {
|
||||||
for (i = 0; i < manager.next_etags_pos; i++) {
|
for (i = 0; i < manager.next_etags_pos; i++) {
|
||||||
taosMemoryFree(manager.etags[i]);
|
taosMemoryFree(manager.etags[i]);
|
||||||
}
|
}
|
||||||
|
if (data.infileFD) {
|
||||||
|
taosCloseFile(&data.infileFD);
|
||||||
|
} else if (data.gb) {
|
||||||
|
growbuffer_destroy(data.gb);
|
||||||
|
}
|
||||||
|
|
||||||
growbuffer_destroy(manager.gb);
|
growbuffer_destroy(manager.gb);
|
||||||
taosMemoryFree(manager.etags);
|
taosMemoryFree(manager.etags);
|
||||||
}
|
}
|
||||||
|
@ -717,9 +722,10 @@ static SArray *getListByPrefix(const char *prefix) {
|
||||||
return data.objectArray;
|
return data.objectArray;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
taosArrayDestroyEx(data.objectArray, s3FreeObjectKey);
|
|
||||||
s3PrintError(__func__, data.status, data.err_msg);
|
s3PrintError(__func__, data.status, data.err_msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
taosArrayDestroyEx(data.objectArray, s3FreeObjectKey);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue