[CP] disable OSS/COS crc checksum
This commit is contained in:
		| @ -329,6 +329,15 @@ int ObCosWrapper::create_cos_handle( | ||||
|       custom_mem.customFree(custom_mem.opaque, ctx); | ||||
|       ret = OB_ALLOCATE_MEMORY_FAILED; | ||||
|       cos_warn_log("[COS]fail to create cos http controller, ret=%d\n", ret); | ||||
|       // A separate instance of ctl->options is now allocated for each request, | ||||
|       // ensuring that disabling CRC checks is a request-specific action | ||||
|       // and does not impact the global setting for COS request options. | ||||
|     } else if (NULL == | ||||
|         (ctx->options->ctl->options = cos_http_request_options_create(ctx->options->pool))) { | ||||
|       cos_pool_destroy(ctx->mem_pool); | ||||
|       custom_mem.customFree(custom_mem.opaque, ctx); | ||||
|       ret = OB_ALLOCATE_MEMORY_FAILED; | ||||
|       cos_warn_log("[COS]fail to create cos http request options, ret=%d\n", ret); | ||||
|     } else { | ||||
|       *h = reinterpret_cast<Handle *>(ctx); | ||||
|  | ||||
| @ -349,7 +358,7 @@ int ObCosWrapper::create_cos_handle( | ||||
|       } else { | ||||
|         cos_set_content_md5_enable(ctx->options->ctl, COS_FALSE); | ||||
|       } | ||||
|       ctx->options->ctl->options->enable_crc = true; | ||||
|       ctx->options->ctl->options->enable_crc = false; | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -410,30 +419,12 @@ int ObCosWrapper::put( | ||||
|       ret = OB_ALLOCATE_MEMORY_FAILED; | ||||
|       cos_warn_log("[COS]fail to pack buf, ret=%d\n", ret); | ||||
|     } else { | ||||
|       uint64_t before_crc64 = cos_crc64(0, (void *)buf, buf_size); | ||||
|       cos_list_add_tail(&content->node, &buffer); | ||||
|       if (NULL == (cos_ret = cos_put_object_from_buffer(ctx->options, &bucket, &object, &buffer, nullptr, &resp_headers)) | ||||
|          || !cos_status_is_ok(cos_ret)) { | ||||
|         convert_io_error(cos_ret, ret); | ||||
|         cos_warn_log("[COS]fail to put one object to cos, ret=%d\n", ret); | ||||
|         log_status(cos_ret, ret); | ||||
|  | ||||
|         char *resp_crc64 = (char*)(apr_table_get(resp_headers, COS_HASH_CRC64_ECMA)); | ||||
|         uint64_t after_crc64 = cos_crc64(0, (void *)buf, buf_size); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= upload crc, ret=%d, before=%llu, after=%llu, resp=%s\n", | ||||
|             ret, before_crc64, after_crc64, resp_crc64); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= upload data, ret=%d, buf_size=%ld, buf=%s, buf=%p\n", | ||||
|             ret, buf_size, buf, buf); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= other, ret=%d, enable_crc=%d\n", | ||||
|             ret, ctx->options->ctl->options->enable_crc); | ||||
|  | ||||
|         if (cos_ret != nullptr) { | ||||
|           if (cos_ret->code == -978 | ||||
|               || ((cos_ret->error_code != nullptr) && 0 == strcmp("InconsistentError", cos_ret->error_code))) { | ||||
|             sleep(5); | ||||
|             raise(SIGSEGV); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| @ -942,9 +933,6 @@ int ObCosWrapper::pread( | ||||
|         } else { | ||||
|           apr_table_set(headers, COS_RANGE_KEY, range_size); | ||||
|         } | ||||
|       } else { | ||||
|         // support crc checksum when reading entire object | ||||
|         ctx->options->ctl->options->enable_crc = true; | ||||
|       } | ||||
|  | ||||
|       if (OB_SUCCESS != ret) { | ||||
| @ -953,42 +941,6 @@ int ObCosWrapper::pread( | ||||
|         convert_io_error(cos_ret, ret); | ||||
|         cos_warn_log("[COS]fail to get object to buffer, ret=%d\n", ret); | ||||
|         log_status(cos_ret, ret); | ||||
|  | ||||
|         // FIXME @fangdan: 临时增加的debug info,发版前会删除 | ||||
|         char *tmp_buf = static_cast<char *>(malloc(buf_size + 1)); | ||||
|         memset(tmp_buf, 0, buf_size + 1); | ||||
|         int64_t tmp_buf_pos = 0; | ||||
|         int64_t size = 0; | ||||
|         cos_buf_t *content = NULL; | ||||
|         cos_list_for_each_entry(cos_buf_t, content, &buffer, node) { | ||||
|           size = cos_buf_size(content); | ||||
|           if (content->pos == nullptr) { | ||||
|             // ret = OB_OSS_ERROR; | ||||
|             cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= unexpected error, ret=%d, size=%ld\n", ret, size); | ||||
|             break; | ||||
|           } else { | ||||
|             memcpy(tmp_buf + tmp_buf_pos, content->pos, size); | ||||
|             tmp_buf_pos += size; | ||||
|           } | ||||
|         } | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= read content, ret=%d, tmp_buf=%s, tmp_buf=%p, pos=%ld\n", | ||||
|             ret, tmp_buf, tmp_buf, tmp_buf_pos); | ||||
|         char *crc64 = (char*)(apr_table_get(resp_headers, COS_HASH_CRC64_ECMA)); | ||||
|         uint64_t read_crc64 = cos_crc64(0, (void *)tmp_buf, tmp_buf_pos); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= resp crc64, ret=%d, crc64=%s, get_data_size=%ld, read_crc64=%llu\n", | ||||
|             ret, crc64, buf_size, read_crc64); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= other, ret=%d, enable_crc=%d, is_range_read=%d\n", | ||||
|             ret, ctx->options->ctl->options->enable_crc, is_range_read); | ||||
|  | ||||
|         if (cos_ret != nullptr) { | ||||
|           if (cos_ret->code == -978 | ||||
|               || ((cos_ret->error_code != nullptr) && 0 == strcmp("InconsistentError", cos_ret->error_code))) { | ||||
|             sleep(5); | ||||
|             raise(SIGSEGV); | ||||
|           } | ||||
|         } | ||||
|         free(tmp_buf); | ||||
|  | ||||
|       } else { | ||||
|         read_size = 0; | ||||
|         int64_t size = 0; | ||||
| @ -1586,31 +1538,12 @@ int ObCosWrapper::upload_part_from_buffer( | ||||
|       ret = OB_ALLOCATE_MEMORY_FAILED; | ||||
|       cos_warn_log("[COS]fail to pack buf, ret=%d, buf_size=%d\n", ret, buf_size); | ||||
|     } else { | ||||
|       uint64_t before_crc64 = cos_crc64(0, (void *)buf, buf_size); | ||||
|       cos_list_add_tail(&content->node, &buffer); | ||||
|       if (NULL == (cos_ret = cos_upload_part_from_buffer(ctx->options, &bucket, &object, &upload_id, part_num, &buffer, &resp_headers)) | ||||
|           || !cos_status_is_ok(cos_ret)) { | ||||
|         convert_io_error(cos_ret, ret); | ||||
|         cos_warn_log("[COS]fail to upload part to cos, ret=%d, part_num=%d\n", ret, part_num); | ||||
|         log_status(cos_ret, ret); | ||||
|  | ||||
|         char *resp_crc64 = (char*)(apr_table_get(resp_headers, COS_HASH_CRC64_ECMA)); | ||||
|         uint64_t after_crc64 = cos_crc64(0, (void *)buf, buf_size); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= upload crc, ret=%d, before=%llu, after=%llu, resp=%s\n", | ||||
|             ret, before_crc64, after_crc64, resp_crc64); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= upload data, ret=%d, buf_size=%ld, buf=%s, buf=%p\n", | ||||
|             ret, buf_size, buf, buf); | ||||
|         cos_warn_log("[COS]=-=-=-=-=-=-=-=-=-=-= other, ret=%d, enable_crc=%d\n", | ||||
|             ret, ctx->options->ctl->options->enable_crc); | ||||
|  | ||||
|         if (cos_ret != nullptr) { | ||||
|           if (cos_ret->code == -978 | ||||
|               || ((cos_ret->error_code != nullptr) && 0 == strcmp("InconsistentError", cos_ret->error_code))) { | ||||
|             sleep(5); | ||||
|             raise(SIGSEGV); | ||||
|           } | ||||
|         } | ||||
|  | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -398,7 +398,6 @@ int ObStorageOssBase::init_with_storage_info(common::ObObjectStorageInfo *storag | ||||
|       OB_LOG(WARN, "that checksum algorithm is not supported for oss", K(ret), K_(checksum_type)); | ||||
|     } else { | ||||
|       is_inited_ = true; | ||||
|       oss_option_->ctl->options->enable_crc = true; | ||||
|     } | ||||
|   } | ||||
|   return ret; | ||||
| @ -517,12 +516,20 @@ int ObStorageOssBase::init_oss_options(aos_pool_t *&aos_pool, oss_request_option | ||||
|     OB_LOG(WARN, "fail to create oss config", K(ret)); | ||||
|   } else if (OB_FAIL(init_oss_endpoint())) { | ||||
|     OB_LOG(WARN, "fail to init oss endpoind", K(ret)); | ||||
|   } else if (OB_ISNULL(oss_option->ctl = aos_http_controller_create(oss_option->pool, 0))) { | ||||
|     ret = OB_OSS_ERROR; | ||||
|     OB_LOG(WARN, "fail to create aos http controller", K(ret)); | ||||
|     // A separate instance of ctl->options is now allocated for each request, | ||||
|     // ensuring that disabling CRC checks is a request-specific action | ||||
|     // and does not impact the global setting for OSS request options. | ||||
|   } else if (OB_ISNULL(oss_option->ctl->options = aos_http_request_options_create(oss_option->pool))) { | ||||
|     ret = OB_OSS_ERROR; | ||||
|     OB_LOG(WARN, "fail to create aos http request options", K(ret)); | ||||
|   } else { | ||||
|     aos_str_set(&oss_option->config->endpoint, oss_endpoint_); | ||||
|     aos_str_set(&oss_option->config->access_key_id, oss_account_.oss_id_); | ||||
|     aos_str_set(&oss_option->config->access_key_secret, oss_account_.oss_key_); | ||||
|     oss_option->config->is_cname = 0; | ||||
|     oss_option->ctl = aos_http_controller_create(oss_option->pool, 0); | ||||
|  | ||||
|     // Set connection timeout, the default value is 10s | ||||
|     oss_option->ctl->options->connect_timeout = 60; | ||||
| @ -535,6 +542,8 @@ int ObStorageOssBase::init_oss_options(aos_pool_t *&aos_pool, oss_request_option | ||||
|     // The maximum time that the control can tolerate, the default is 15 seconds | ||||
|     oss_option->ctl->options->speed_limit = 16000; | ||||
|     oss_option->ctl->options->speed_time = 60; | ||||
|  | ||||
|     oss_option->ctl->options->enable_crc = false; | ||||
|   } | ||||
|   return ret; | ||||
| } | ||||
| @ -849,8 +858,6 @@ int ObStorageOssMultiPartWriter::write_single_part() | ||||
|         && OB_FAIL(add_content_md5(oss_option_, base_buf_, base_buf_pos_, headers))) { | ||||
|       OB_LOG(WARN, "fail to add content md5 when uploading part", K(ret)); | ||||
|     } else { | ||||
|       // FIXME @fangdan: 临时增加的debug info,发版前会删除 | ||||
|       uint64_t before_crc64 = aos_crc64(0, (void *)base_buf_, base_buf_pos_); | ||||
|       aos_list_add_tail(&content->node, &buffer); | ||||
|  | ||||
|       if (NULL == (aos_ret = oss_do_upload_part_from_buffer(oss_option_, &bucket, &object, | ||||
| @ -861,20 +868,6 @@ int ObStorageOssMultiPartWriter::write_single_part() | ||||
|         OB_LOG(WARN, "fail to upload one part from buffer", | ||||
|             K_(base_buf_pos), K_(bucket), K_(object), K(ret)); | ||||
|         print_oss_info(resp_headers, aos_ret, ret); | ||||
|  | ||||
|         uint64_t after_crc64 = aos_crc64(0, (void *)base_buf_, base_buf_pos_); | ||||
|         char *resp_crc64 = (char*)(apr_table_get(resp_headers, OSS_HASH_CRC64_ECMA)); | ||||
|         OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= upload crc", K(ret), K(before_crc64), K(after_crc64), K(resp_crc64)); | ||||
|         OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= upload data", K(ret), K(base_buf_pos_), K(base_buf_), KP(base_buf_)); | ||||
|         OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= other", K(ret), K(oss_option_->ctl->options->enable_crc)); | ||||
|  | ||||
|         if (OB_NOT_NULL(aos_ret)) { | ||||
|           if (aos_ret->code == -978 | ||||
|               || (OB_NOT_NULL(aos_ret->error_code) && 0 == STRCMP("InconsistentError", aos_ret->error_code))) { | ||||
|             sleep(5); | ||||
|             ob_abort(); | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       bool is_slow = false; | ||||
|       print_access_storage_log("oss upload one part ", object_, start_time, base_buf_pos_, &is_slow); | ||||
| @ -1183,8 +1176,6 @@ int ObStorageOssReader::pread( | ||||
|           } else { | ||||
|             apr_table_set(headers, OSS_RANGE_KEY, range_size); | ||||
|           } | ||||
|         } else { | ||||
|           oss_option->ctl->options->enable_crc = true; | ||||
|         } | ||||
|  | ||||
|         if (OB_FAIL(ret)) { | ||||
| @ -1193,36 +1184,6 @@ int ObStorageOssReader::pread( | ||||
|           convert_io_error(aos_ret, ret); | ||||
|           OB_LOG(WARN, "fail to get object to buffer", K_(bucket), K_(object), K(ret)); | ||||
|           print_oss_info(resp_headers, aos_ret, ret); | ||||
|  | ||||
|           ObArenaAllocator allocator; | ||||
|           char *tmp_buf = static_cast<char *>(allocator.alloc(buf_size + 1)); | ||||
|           MEMSET(tmp_buf, 0, buf_size + 1); | ||||
|           int64_t tmp_buf_pos = 0; | ||||
|           aos_list_for_each_entry(aos_buf_t, content, &buffer, node) { | ||||
|             size = aos_buf_size(content); | ||||
|             if (OB_ISNULL(content->pos)) { | ||||
|               // ret = OB_OSS_ERROR; | ||||
|               OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= unexpected error, the data pos is null", K(size), K(ret)); | ||||
|               break; | ||||
|             } else { | ||||
|               memcpy(tmp_buf + tmp_buf_pos, content->pos, size); | ||||
|               tmp_buf_pos += size; | ||||
|             } | ||||
|           } | ||||
|           OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= read content", K(ret), K(tmp_buf), KP(tmp_buf), K(file_length_), K(tmp_buf_pos)); | ||||
|           char *crc64 = (char*)(apr_table_get(resp_headers, OSS_HASH_CRC64_ECMA)); | ||||
|           uint64_t read_crc64 = aos_crc64(0, tmp_buf, tmp_buf_pos); | ||||
|           // std::cout << "=========== resp crc64=" << crc64 << std::endl;; | ||||
|           OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= resp crc64", K(ret), K(crc64), K(get_data_size), K(read_crc64)); | ||||
|           OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= other", K(ret), K(oss_option->ctl->options->enable_crc), K(is_range_read)); | ||||
|  | ||||
|           if (OB_NOT_NULL(aos_ret)) { | ||||
|             if (aos_ret->code == -978 | ||||
|                 || (OB_NOT_NULL(aos_ret->error_code) && 0 == STRCMP("InconsistentError", aos_ret->error_code))) { | ||||
|               sleep(5); | ||||
|               ob_abort(); | ||||
|             } | ||||
|           } | ||||
|         } else { | ||||
|           //check date len | ||||
|           aos_list_for_each_entry(aos_buf_t, content, &buffer, node) { | ||||
| @ -2321,28 +2282,12 @@ int ObStorageOssWriter::write(const char *buf, const int64_t size) | ||||
|         && OB_FAIL(add_content_md5(oss_option_, buf, size, headers))) { | ||||
|       OB_LOG(WARN, "fail to add content md5 when putting object", K(ret)); | ||||
|     } else { | ||||
|       uint64_t before_crc64 = aos_crc64(0, (void *)buf, size); | ||||
|       aos_list_add_tail(&content->node, &buffer); | ||||
|       if (OB_ISNULL(aos_ret = oss_put_object_from_buffer(oss_option_, &bucket, &object, | ||||
|                     &buffer, headers, &resp_headers)) || !aos_status_is_ok(aos_ret)) { | ||||
|         convert_io_error(aos_ret, ret); | ||||
|         OB_LOG(WARN, "fail to upload one object", K(bucket_), K(object_), K(ret)); | ||||
|         print_oss_info(resp_headers, aos_ret, ret); | ||||
|  | ||||
|         uint64_t after_crc64 = aos_crc64(0, (void *)buf, size); | ||||
|         char *resp_crc64 = (char*)(apr_table_get(resp_headers, OSS_HASH_CRC64_ECMA)); | ||||
|         OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= write crc", K(ret), K(before_crc64), K(after_crc64), K(resp_crc64)); | ||||
|         OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= write data", K(ret), K(size), K(buf), KP(buf)); | ||||
|         OB_LOG(WARN, "=-=-=-=-=-=-=-=-=-=-= other", K(ret), K(oss_option_->ctl->options->enable_crc)); | ||||
|  | ||||
|         if (OB_NOT_NULL(aos_ret)) { | ||||
|           if (aos_ret->code == -978 | ||||
|               || (OB_NOT_NULL(aos_ret->error_code) && 0 == STRCMP("InconsistentError", aos_ret->error_code))) { | ||||
|             sleep(5); | ||||
|             ob_abort(); | ||||
|           } | ||||
|         } | ||||
|  | ||||
|       } else { | ||||
|         file_length_ = size; | ||||
|       } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 obdev
					obdev