diff options
| author | zhangchengwei <[email protected]> | 2018-12-15 13:50:48 +0800 |
|---|---|---|
| committer | zhengchao <[email protected]> | 2018-12-21 11:09:32 +0600 |
| commit | a70aa35a3a6d24ec415527ce2ad52e7fc80c4c79 (patch) | |
| tree | 356e46bfed2f2e83c7949346982fe875eab87d8d /cache | |
| parent | 1059af3c72c8b40d3edb08587ce1119bf7e3747b (diff) | |
将bucketname作为object_key的一部分;修改delete接口加入minioaddr和bucket可选参数。
Diffstat (limited to 'cache')
| -rw-r--r-- | cache/include/cache_evbase_client.h | 11 | ||||
| -rw-r--r-- | cache/include/tango_cache_client.h | 2 | ||||
| -rw-r--r-- | cache/include/tango_cache_pending.h | 47 | ||||
| -rw-r--r-- | cache/src/cache_evbase_client.cpp | 4 | ||||
| -rw-r--r-- | cache/src/tango_cache_client.cpp | 30 | ||||
| -rw-r--r-- | cache/src/tango_cache_client_in.h | 4 | ||||
| -rw-r--r-- | cache/src/tango_cache_redis.cpp | 24 | ||||
| -rw-r--r-- | cache/src/tango_cache_transfer.cpp | 16 |
8 files changed, 56 insertions, 82 deletions
diff --git a/cache/include/cache_evbase_client.h b/cache/include/cache_evbase_client.h index 86d757a..b34e4eb 100644 --- a/cache/include/cache_evbase_client.h +++ b/cache/include/cache_evbase_client.h @@ -37,15 +37,16 @@ struct tango_cache_parameter *cache_evbase_parameter_new(const char* profile_pat /*����ʵ�����̰߳�ȫ���ڲ�������һ���߳�*/ struct cache_evbase_instance *cache_evbase_instance_new(struct tango_cache_parameter *param, void *runtimelog); -//GET�ӿڣ��ɹ�����0��ʧ�ܷ���-1��future�ص���������������߳���ִ�У���ͬ +/******************************************* GET�ӿ� ****************************************/ +//�ɹ�����0��ʧ�ܷ���-1��future�ص���������������߳���ִ�У���ͬ int cache_evbase_fetch_object(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_get *meta, enum OBJECT_LOCATION where_to_get); int cache_evbase_head_object(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_get *meta); struct tango_cache_result *cache_evbase_read_result(void *promise_result); -//DELETE�ӿ� -int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct future* f, const char *objkey); +/****************************************** DELETE�ӿ� **************************************/ +int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct future* f, const char *objkey, const char *minio_addr=NULL, const char *bucket=NULL); -//һ�����ϴ��ӿ� +/***************************************** һ�����ϴ��ӿ� **********************************/ int cache_evbase_upload_once_data(struct cache_evbase_instance *instance, struct future* f, enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size, struct tango_cache_meta_put *meta, @@ -55,7 +56,7 @@ int cache_evbase_upload_once_evbuf(struct cache_evbase_instance *instance, struc struct tango_cache_meta_put *meta, char *path/*OUT*/, size_t pathsize); -//��ʽ�ϴ��ӿ� +/****************************************** ��ʽ�ϴ��ӿ� ***********************************/ struct cache_evbase_ctx *cache_evbase_update_start(struct cache_evbase_instance *instance, struct future* f, struct tango_cache_meta_put *meta); int cache_evbase_update_frag_data(struct cache_evbase_ctx *ctx_asyn, enum PUT_MEMORY_COPY_WAY way, const char *data, size_t size); int cache_evbase_update_frag_evbuf(struct cache_evbase_ctx *ctx_asyn, struct evbuffer *evbuf); diff --git a/cache/include/tango_cache_client.h b/cache/include/tango_cache_client.h index 83e87f2..226d4c1 100644 --- a/cache/include/tango_cache_client.h +++ b/cache/include/tango_cache_client.h @@ -111,7 +111,7 @@ struct tango_cache_result *tango_cache_read_result(future_result_t *promise_resu /****************************************** DELETE�ӿڵ�API ******************************************/ -int tango_cache_delete_object(struct tango_cache_instance *instance, struct future* f, const char *objkey); +int tango_cache_delete_object(struct tango_cache_instance *instance, struct future* f, const char *objkey, const char *minio_addr=NULL, const char *bucket=NULL); /****************************************** UPLOAD�ӿڵ�API ******************************************/ diff --git a/cache/include/tango_cache_pending.h b/cache/include/tango_cache_pending.h index a8d5858..0c72635 100644 --- a/cache/include/tango_cache_pending.h +++ b/cache/include/tango_cache_pending.h @@ -1,48 +1,13 @@ #pragma once #include<time.h> - -enum tfe_http_std_field -{ - TFE_HTTP_UNKNOWN_FIELD = 0, - TFE_HTTP_HOST, - TFE_HTTP_REFERER, - TFE_HTTP_USER_AGENT, - TFE_HTTP_COOKIE, - TFE_HTTP_PROXY_AUTHORIZATION, - TFE_HTTP_AUTHORIZATION, - TFE_HTTP_LOCATION, - TFE_HTTP_SERVER, - TFE_HTTP_ETAG, - TFE_HTTP_DATE, - TFE_HTTP_TRAILER, - TFE_HTTP_TRANSFER_ENCODING, - TFE_HTTP_VIA, - TFE_HTTP_PRAGMA, - TFE_HTTP_CONNECTION, - TFE_HTTP_CONT_ENCODING, - TFE_HTTP_CONT_LANGUAGE, - TFE_HTTP_CONT_LOCATION, - TFE_HTTP_CONT_RANGE, - TFE_HTTP_CONT_LENGTH, - TFE_HTTP_CONT_TYPE, - TFE_HTTP_CONT_DISPOSITION, - TFE_HTTP_EXPIRES, - TFE_HTTP_ACCEPT_ENCODING, - TFE_HTTP_CACHE_CONTROL, - TLF_HTTP_IF_MATCH, - TLF_HTTP_IF_NONE_MATCH, - TLF_HTTP_IF_MODIFIED_SINCE, - TLF_HTTP_IF_UNMODIFIED_SINCE, - TLF_HTTP_LAST_MODIFIED -}; - +#include<tfe_http.h> enum cache_pending_action { UNDEFINED = 0, ALLOWED, FORBIDDEN, - VERIFY + REVALIDATE }; @@ -65,6 +30,8 @@ struct response_freshness{ time_t timeout; }; + +time_t read_GMT_time(const char* gmt_string); /* 函数功能: 根据请求头字段判断是否允许将缓存作为该请求的响应,并且将请求字段对缓存新鲜度的约束范围作为传出参数返回给调用者 @@ -76,9 +43,9 @@ restrict:如果该函数返回值为ALLOWED,则返回请求Cache-Control字段 UNDEFINED = 0,//请求字段中未定义缓存的行为 ALLOWED ,//允许使用缓存作为该请求的响应 FORBIDDEN,//禁止使用缓存作为该请求的响应,需要向源服务器请求 -VERIFY,//禁止使用未验证有效性的缓存作为该请求的响应 +REVALIDATE,//禁止使用未验证有效性的缓存作为该请求的响应 */ -enum cache_pending_action tfe_cache_get_pending(const struct tfe_http_field *request, size_t n_fields,struct request_freshness* restrict); +enum cache_pending_action tfe_cache_get_pending(const struct tfe_http_half *request, struct request_freshness* restrict); @@ -94,4 +61,4 @@ UNDEFINED = 0,//响应字段中未定义缓存的行为 ALLOWED ,//允许缓存该响应 FORBIDDEN,//禁止缓存该响应 */ -enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_field *response, size_t n_fields, struct response_freshness* freshness);
\ No newline at end of file +enum cache_pending_action tfe_cache_put_pending(const struct tfe_http_half *response, struct response_freshness* freshness); diff --git a/cache/src/cache_evbase_client.cpp b/cache/src/cache_evbase_client.cpp index 27aa420..bef351e 100644 --- a/cache/src/cache_evbase_client.cpp +++ b/cache/src/cache_evbase_client.cpp @@ -554,14 +554,14 @@ int cache_evbase_head_object(struct cache_evbase_instance *instance, struct futu return 0; } -int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct future* f, const char *objkey) +int cache_evbase_delete_object(struct cache_evbase_instance *instance, struct future* f, const char *objkey, const char *minio_addr, const char *bucket) { struct cache_evbase_ctx *ctx_asyn; struct databuffer *buffer; ctx_asyn = (struct cache_evbase_ctx *)calloc(1, sizeof(struct cache_evbase_ctx)); ctx_asyn->instance_asyn = instance; - ctx_asyn->ctx = tango_cache_delete_prepare(instance->instance, f, objkey); + ctx_asyn->ctx = tango_cache_delete_prepare(instance->instance, f, objkey, minio_addr, bucket); if(ctx_asyn->ctx == NULL) { free(ctx_asyn); diff --git a/cache/src/tango_cache_client.cpp b/cache/src/tango_cache_client.cpp index 032ce61..02d53ae 100644 --- a/cache/src/tango_cache_client.cpp +++ b/cache/src/tango_cache_client.cpp @@ -283,11 +283,11 @@ void tango_cache_get_object_path(struct tango_cache_ctx *ctx, char *path/*OUT*/, { if(ctx->locate == OBJECT_IN_MINIO) { - snprintf(path, pathsize, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(path, pathsize, "http://%s/%s", ctx->hostaddr, ctx->object_key); } else { - snprintf(path, pathsize, "redis://%s/%s/%s", ctx->instance->redisaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(path, pathsize, "redis://%s/%s", ctx->instance->redisaddr, ctx->object_key); } } } @@ -405,14 +405,14 @@ struct tango_cache_ctx *tango_cache_update_prepare(struct tango_cache_instance * if(instance->param->hash_object_key) { caculate_sha256(meta->url, strlen(meta->url), buffer, 72); - snprintf(ctx->object_key, 256, "%c%c/%c%c/%s", buffer[0], buffer[1], buffer[2], buffer[3], buffer+4); + snprintf(ctx->object_key, 256, "%s/%c%c/%c%c/%s", instance->param->bucketname, buffer[0], buffer[1], buffer[2], buffer[3], buffer+4); //����ԭʼURL snprintf(buffer, 2064, "x-amz-meta-url: %s", meta->url); ctx->headers = curl_slist_append(ctx->headers, buffer); } else { - snprintf(ctx->object_key, 256, "%s", meta->url); + snprintf(ctx->object_key, 256, "%s/%s", instance->param->bucketname, meta->url); } if(wired_load_balancer_lookup(instance->param->minio.wiredlb, ctx->object_key, strlen(ctx->object_key), ctx->hostaddr, 48)) { @@ -591,11 +591,11 @@ struct tango_cache_ctx *tango_cache_fetch_prepare(struct tango_cache_instance *i if(instance->param->hash_object_key) { caculate_sha256(meta->url, strlen(meta->url), sha256, 72); - snprintf(ctx->object_key, 256, "%c%c/%c%c/%s", sha256[0], sha256[1], sha256[2], sha256[3], sha256+4); + snprintf(ctx->object_key, 256, "%s/%c%c/%c%c/%s", instance->param->bucketname, sha256[0], sha256[1], sha256[2], sha256[3], sha256+4); } else { - snprintf(ctx->object_key, 256, "%s", meta->url); + snprintf(ctx->object_key, 256, "%s/%s", instance->param->bucketname, meta->url); } if(wired_load_balancer_lookup(instance->param->minio.wiredlb, ctx->object_key, strlen(ctx->object_key), ctx->hostaddr, 48)) { @@ -639,10 +639,11 @@ int tango_cache_head_object(struct tango_cache_instance *instance, struct future return do_tango_cache_head_object(ctx, location); } -struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance *instance, struct future* f, const char *objkey) +struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance *instance, struct future* f, const char *objkey, const char *minio_addr, const char *bucket) { struct tango_cache_ctx *ctx; char sha256[72]; + const char *pbucket; if(sessions_exceeds_limit(instance, OBJECT_IN_MINIO)) { @@ -656,16 +657,21 @@ struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance * ctx->promise = future_to_promise(f); ctx->method = CACHE_REQUEST_DELETE; + pbucket = (bucket==NULL)?instance->param->bucketname:bucket; if(instance->param->hash_object_key) { caculate_sha256(objkey, strlen(objkey), sha256, 72); - snprintf(ctx->object_key, 256, "%c%c/%c%c/%s", sha256[0], sha256[1], sha256[2], sha256[3], sha256+4); + snprintf(ctx->object_key, 256, "%s/%c%c/%c%c/%s", pbucket, sha256[0], sha256[1], sha256[2], sha256[3], sha256+4); } else { - snprintf(ctx->object_key, 256, "%s", objkey); + snprintf(ctx->object_key, 256, "%s/%s", pbucket, objkey); } - if(wired_load_balancer_lookup(instance->param->minio.wiredlb, ctx->object_key, strlen(ctx->object_key), ctx->hostaddr, 48)) + if(minio_addr != NULL) + { + snprintf(ctx->hostaddr, 48, "%s", minio_addr); + } + else if(wired_load_balancer_lookup(instance->param->minio.wiredlb, ctx->object_key, strlen(ctx->object_key), ctx->hostaddr, 48)) { instance->error_code = CACHE_ERR_WIREDLB; instance->statistic.totaldrop_num += 1; @@ -675,11 +681,11 @@ struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance * return ctx; } -int tango_cache_delete_object(struct tango_cache_instance *instance, struct future* f, const char *objkey) +int tango_cache_delete_object(struct tango_cache_instance *instance, struct future* f, const char *objkey, const char *minio_addr, const char *bucket) { struct tango_cache_ctx *ctx; - ctx = tango_cache_delete_prepare(instance, f, objkey); + ctx = tango_cache_delete_prepare(instance, f, objkey, minio_addr, bucket); if(ctx == NULL) { return -1; diff --git a/cache/src/tango_cache_client_in.h b/cache/src/tango_cache_client_in.h index 5f0a938..ed846dc 100644 --- a/cache/src/tango_cache_client_in.h +++ b/cache/src/tango_cache_client_in.h @@ -194,8 +194,8 @@ struct tango_cache_ctx *tango_cache_update_prepare(struct tango_cache_instance * struct future* f, struct tango_cache_meta_put *meta, enum OBJECT_LOCATION maybe_loc); struct tango_cache_ctx *tango_cache_fetch_prepare(struct tango_cache_instance *instance, enum CACHE_REQUEST_METHOD method, struct future* f, struct tango_cache_meta_get *meta, enum OBJECT_LOCATION where_to_get); -struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance *instance, struct future* f, const char *objkey); - +struct tango_cache_ctx *tango_cache_delete_prepare(struct tango_cache_instance *instance, + struct future* f, const char *objkey, const char *minio_addr, const char *bucket); enum OBJECT_LOCATION tango_cache_object_locate(struct tango_cache_instance *instance, size_t object_size); void tango_cache_get_object_path(struct tango_cache_ctx *ctx, char *path/*OUT*/, size_t pathsize); diff --git a/cache/src/tango_cache_redis.cpp b/cache/src/tango_cache_redis.cpp index dbd1537..c1fcbc5 100644 --- a/cache/src/tango_cache_redis.cpp +++ b/cache/src/tango_cache_redis.cpp @@ -221,8 +221,8 @@ int tango_cache_head_redis(struct tango_cache_ctx *ctx) { int ret = -1; - ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hget_command_cb, ctx, "HMGET %s/%s OBJECT_META OBJECT_LOCATION", - ctx->instance->param->bucketname, ctx->object_key); + ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hget_command_cb, ctx, + "HMGET %s OBJECT_META OBJECT_LOCATION", ctx->object_key); if(ret != REDIS_OK) { tango_cache_set_fail_state(ctx, CACHE_ERR_REDIS_CONNECT); @@ -240,8 +240,8 @@ int tango_cache_fetch_redis(struct tango_cache_ctx *ctx) { int ret = -1; - ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hget_command_cb, ctx, "HMGET %s/%s OBJECT_META OBJECT_LOCATION OBJECT_BODY", - ctx->instance->param->bucketname, ctx->object_key); + ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hget_command_cb, ctx, + "HMGET %s OBJECT_META OBJECT_LOCATION OBJECT_BODY", ctx->object_key); if(ret != REDIS_OK) { tango_cache_set_fail_state(ctx, CACHE_ERR_REDIS_CONNECT); @@ -259,8 +259,8 @@ int tango_cache_try_fetch_redis(struct tango_cache_ctx *ctx) { int ret = -1; - ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hget_command_cb, ctx, "HMGET %s/%s OBJECT_META OBJECT_LOCATION OBJECT_BODY", - ctx->instance->param->bucketname, ctx->object_key); + ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hget_command_cb, ctx, + "HMGET %s OBJECT_META OBJECT_LOCATION OBJECT_BODY", ctx->object_key); if(ret != REDIS_OK) { tango_cache_set_fail_state(ctx, CACHE_ERR_REDIS_CONNECT); @@ -295,8 +295,8 @@ static void redis_hset_command_cb(struct redisClusterAsyncContext *ac, void *vre { case PUT_STATE_REDIS_META: case PUT_STATE_REDIS_ALL: - ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hset_command_cb, ctx, "EXPIRE %s/%s %u", - ctx->instance->param->bucketname, ctx->object_key, ctx->put.object_ttl); + ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hset_command_cb, ctx, + "EXPIRE %s %u", ctx->object_key, ctx->put.object_ttl); if(ret != REDIS_OK) { tango_cache_set_fail_state(ctx, CACHE_ERR_REDIS_EXEC); @@ -321,8 +321,8 @@ int redis_put_minio_object_meta(struct tango_cache_ctx *ctx, bool callback) char *meta; meta = cJSON_PrintUnformatted(ctx->put.object_meta); - ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hset_command_cb, ctx, "HMSET %s/%s OBJECT_LOCATION minio OBJECT_META %s", - ctx->instance->param->bucketname, ctx->object_key, meta); + ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hset_command_cb, ctx, + "HMSET %s OBJECT_LOCATION minio OBJECT_META %s", ctx->object_key, meta); if(ret != REDIS_OK) { tango_cache_set_fail_state(ctx, CACHE_ERR_REDIS_CONNECT); @@ -344,8 +344,8 @@ int redis_put_complete_part_data(struct tango_cache_ctx *ctx, enum PUT_MEMORY_CO ctx->instance->statistic.memory_used -= size; meta = cJSON_PrintUnformatted(ctx->put.object_meta); - ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hset_command_cb, ctx, "HMSET %s/%s OBJECT_LOCATION redis OBJECT_META %s OBJECT_BODY %b", - ctx->instance->param->bucketname, ctx->object_key, meta, data, size); + ret = redisClusterAsyncCommand(ctx->instance->redis_ac, redis_hset_command_cb, ctx, + "HMSET %s OBJECT_LOCATION redis OBJECT_META %s OBJECT_BODY %b", ctx->object_key, meta, data, size); if(ret != REDIS_OK) { tango_cache_set_fail_state(ctx, CACHE_ERR_REDIS_CONNECT); diff --git a/cache/src/tango_cache_transfer.cpp b/cache/src/tango_cache_transfer.cpp index 7413e2f..183eb2d 100644 --- a/cache/src/tango_cache_transfer.cpp +++ b/cache/src/tango_cache_transfer.cpp @@ -124,11 +124,11 @@ static int http_put_bodypart_request_evbuf(struct tango_cache_ctx *ctx, bool ful ctx->put.upload_offset = 0; if(full) { - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s", ctx->hostaddr, ctx->object_key); } else { - snprintf(minio_url, 256, "http://%s/%s/%s?partNumber=%d&uploadId=%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key, ++ctx->put.part_index, ctx->put.uploadID); + snprintf(minio_url, 256, "http://%s/%s?partNumber=%d&uploadId=%s", ctx->hostaddr, ctx->object_key, ++ctx->put.part_index, ctx->put.uploadID); curl_easy_setopt(ctx->curl, CURLOPT_HEADERFUNCTION, curl_put_multipart_header_cb); curl_easy_setopt(ctx->curl, CURLOPT_HEADERDATA, ctx); } @@ -185,7 +185,7 @@ int curl_get_minio_uploadID(struct tango_cache_ctx *ctx) return -1; } - snprintf(minio_url, 256, "http://%s/%s/%s?uploads", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s?uploads", ctx->hostaddr, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_POST, 1L); curl_easy_setopt(ctx->curl, CURLOPT_POSTFIELDSIZE, 0); //Ĭ��ʹ�ûص���������fread�����Է��ֹر�Expectʱ�ᵼ�¿���curl_multi_socket_action curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); @@ -215,7 +215,7 @@ int cache_delete_minio_object(struct tango_cache_ctx *ctx, bool call_back) return -1; } - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s", ctx->hostaddr, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_WRITEFUNCTION, curl_response_any_cb); @@ -239,7 +239,7 @@ bool cache_cancel_upload_minio(struct tango_cache_ctx *ctx) return false; } - snprintf(minio_url, 256, "http://%s/%s/%s?uploadId=%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key, ctx->put.uploadID); + snprintf(minio_url, 256, "http://%s/%s?uploadId=%s", ctx->hostaddr, ctx->object_key, ctx->put.uploadID); curl_easy_setopt(ctx->curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_WRITEFUNCTION, curl_response_any_cb); @@ -265,7 +265,7 @@ bool cache_kick_combine_minio(struct tango_cache_ctx *ctx) } construct_complete_xml(ctx, &ctx->put.combine_xml, &len); - snprintf(minio_url, 256, "http://%s/%s/%s?uploadId=%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key, ctx->put.uploadID); + snprintf(minio_url, 256, "http://%s/%s?uploadId=%s", ctx->hostaddr, ctx->object_key, ctx->put.uploadID); curl_easy_setopt(ctx->curl, CURLOPT_POST, 1L); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_WRITEFUNCTION, curl_response_any_cb); @@ -522,7 +522,7 @@ int http_put_complete_part_data(struct tango_cache_ctx *ctx, enum PUT_MEMORY_COP } ctx->put.state = PUT_STATE_END; - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s", ctx->hostaddr, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); curl_easy_setopt(ctx->curl, CURLOPT_WRITEFUNCTION, curl_response_any_cb); curl_easy_setopt(ctx->curl, CURLOPT_WRITEDATA, ctx); @@ -901,7 +901,7 @@ static int tango_cache_fetch_minio(struct tango_cache_ctx *ctx) return -1; } - snprintf(minio_url, 256, "http://%s/%s/%s", ctx->hostaddr, ctx->instance->param->bucketname, ctx->object_key); + snprintf(minio_url, 256, "http://%s/%s", ctx->hostaddr, ctx->object_key); curl_easy_setopt(ctx->curl, CURLOPT_URL, minio_url); if(ctx->method == CACHE_REQUEST_HEAD) { |
