vnode/cos: fix get object block callback
This commit is contained in:
parent
a1e692a796
commit
e5bbcf76f1
|
@ -78,6 +78,7 @@ typedef struct {
|
||||||
S3Status status;
|
S3Status status;
|
||||||
uint64_t content_length;
|
uint64_t content_length;
|
||||||
char *buf;
|
char *buf;
|
||||||
|
int64_t buf_pos;
|
||||||
} TS3SizeCBD;
|
} TS3SizeCBD;
|
||||||
|
|
||||||
static S3Status responsePropertiesCallback(const S3ResponseProperties *properties, void *callbackData) {
|
static S3Status responsePropertiesCallback(const S3ResponseProperties *properties, void *callbackData) {
|
||||||
|
@ -730,15 +731,19 @@ void s3DeleteObjects(const char *object_name[], int nobject) {
|
||||||
|
|
||||||
static S3Status getObjectDataCallback(int bufferSize, const char *buffer, void *callbackData) {
|
static S3Status getObjectDataCallback(int bufferSize, const char *buffer, void *callbackData) {
|
||||||
TS3SizeCBD *cbd = callbackData;
|
TS3SizeCBD *cbd = callbackData;
|
||||||
|
/*
|
||||||
if (cbd->content_length != bufferSize) {
|
if (cbd->content_length != bufferSize) {
|
||||||
cbd->status = S3StatusAbortedByCallback;
|
cbd->status = S3StatusAbortedByCallback;
|
||||||
return S3StatusAbortedByCallback;
|
return S3StatusAbortedByCallback;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
if (!cbd->buf) {
|
||||||
|
cbd->buf = taosMemoryCalloc(1, bufferSize);
|
||||||
|
}
|
||||||
|
|
||||||
char *buf = taosMemoryCalloc(1, bufferSize);
|
if (cbd->buf) {
|
||||||
if (buf) {
|
memcpy(cbd->buf + cbd->buf_pos, buffer, bufferSize);
|
||||||
memcpy(buf, buffer, bufferSize);
|
cbd->buf_pos += bufferSize;
|
||||||
cbd->buf = buf;
|
|
||||||
cbd->status = S3StatusOK;
|
cbd->status = S3StatusOK;
|
||||||
return S3StatusOK;
|
return S3StatusOK;
|
||||||
} else {
|
} else {
|
||||||
|
@ -760,6 +765,7 @@ int32_t s3GetObjectBlock(const char *object_name, int64_t offset, int64_t size,
|
||||||
|
|
||||||
TS3SizeCBD cbd = {0};
|
TS3SizeCBD cbd = {0};
|
||||||
cbd.content_length = size;
|
cbd.content_length = size;
|
||||||
|
cbd.buf_pos = 0;
|
||||||
do {
|
do {
|
||||||
S3_get_object(&bucketContext, object_name, &getConditions, offset, size, 0, 0, &getObjectHandler, &cbd);
|
S3_get_object(&bucketContext, object_name, &getConditions, offset, size, 0, 0, &getObjectHandler, &cbd);
|
||||||
} while (S3_status_is_retryable(cbd.status) && should_retry());
|
} while (S3_status_is_retryable(cbd.status) && should_retry());
|
||||||
|
|
Loading…
Reference in New Issue