修正cache_cookied_content开关未生效的bug;在http结束时增加cache日志;
This commit is contained in:
@@ -132,6 +132,29 @@ struct cache_write_context
|
||||
size_t content_len;
|
||||
size_t uploaded_len;
|
||||
};
|
||||
const char* cache_pending_result_string(enum cache_pending_result result)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
case PENDING_RESULT_NONE:
|
||||
return "none";
|
||||
case PENDING_RESULT_FOBIDDEN:
|
||||
return "forbidden";
|
||||
case PENDING_RESULT_REVALIDATE:
|
||||
return "revalidate";
|
||||
case PENDING_RESULT_ALLOWED:
|
||||
return "allowd";
|
||||
case PENDING_RESULT_HIT:
|
||||
return "hit";
|
||||
case PENDING_RESULT_MISS:
|
||||
return "miss";
|
||||
default:
|
||||
assert(0);
|
||||
return "?";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void web_cache_stat_cb(evutil_socket_t fd, short what, void * arg)
|
||||
{
|
||||
struct cache_handle* cache=(struct cache_handle *)arg;
|
||||
@@ -743,7 +766,7 @@ struct cache_handle* create_web_cache_handle(const char* profile_path, const cha
|
||||
MESA_load_profile_int_def(profile_path, section, "max_cache_obj_size", &(temp), 1024*1024*1024);
|
||||
cache->default_cache_policy.max_cache_obj_size=temp; //<1GB by default
|
||||
|
||||
MESA_load_profile_int_def(profile_path, section, "min_cache_obj_size", &(temp), 16*1024);
|
||||
MESA_load_profile_int_def(profile_path, section, "min_cache_obj_size", &(temp), 1*1024);
|
||||
cache->default_cache_policy.min_cache_obj_size=temp;// > 16kb by default
|
||||
|
||||
if(cache->cache_policy_enabled)
|
||||
@@ -982,14 +1005,14 @@ static void cache_read_meta_on_succ(future_result_t * result, void * user)
|
||||
break;
|
||||
case RESULT_TYPE_USERTAG:
|
||||
cached_meta_set(&ctx->cached_obj_meta, RESULT_TYPE_USERTAG, _result->data_frag, _result->size);
|
||||
TFE_LOG_DEBUG(ctx->ref_handle->logger, "cache meta query hit: %s %s %s"
|
||||
TFE_LOG_DEBUG(ctx->ref_handle->logger, "cache meta read hit: %s %s %s"
|
||||
, ctx->url
|
||||
, ctx->cached_obj_meta.last_modified ? ctx->cached_obj_meta.last_modified:"no_last_modify"
|
||||
, ctx->cached_obj_meta.etag ? ctx->cached_obj_meta.etag:"no_etag");
|
||||
break;
|
||||
case RESULT_TYPE_MISS:
|
||||
ctx->status=PENDING_RESULT_MISS;
|
||||
TFE_LOG_DEBUG(ctx->ref_handle->logger, "cache meta query miss: %s", ctx->url);
|
||||
TFE_LOG_DEBUG(ctx->ref_handle->logger, "cache meta read miss: %s", ctx->url);
|
||||
//NOT break intentionally.
|
||||
case RESULT_TYPE_END:
|
||||
//last call.
|
||||
@@ -1077,7 +1100,7 @@ enum cache_pending_result web_cache_async_pending(struct cache_handle* handle, u
|
||||
}
|
||||
if(_mid->shall_bypass ||
|
||||
(!param->force_caching && !param->cache_dyn_url && _mid->is_dyn_url && param->key_descr.qs_num==0) ||
|
||||
(!param->force_caching && param->cache_cookied_cont && _mid->has_cookie))
|
||||
(!param->force_caching && !param->cache_cookied_cont && _mid->has_cookie))
|
||||
{
|
||||
_mid->result=PENDING_RESULT_FOBIDDEN;
|
||||
return _mid->result;
|
||||
@@ -1262,7 +1285,7 @@ struct cache_write_context* web_cache_write_start(struct cache_handle* handle, u
|
||||
if(!(param->ignore_res_nocache || param->force_caching))
|
||||
{
|
||||
ATOMIC_INC(&(handle->stat_val[STAT_CACHE_WRITE_FORBIDEN]));
|
||||
TFE_LOG_DEBUG(handle->logger, "cache update forbiden: %s", session->req->req_spec.url);
|
||||
TFE_LOG_DEBUG(handle->logger, "cache write forbiden: %s", session->req->req_spec.url);
|
||||
return NULL;
|
||||
}
|
||||
break;
|
||||
@@ -1280,6 +1303,13 @@ struct cache_write_context* web_cache_write_start(struct cache_handle* handle, u
|
||||
|| (!param->cache_html && _mid->is_html)
|
||||
)
|
||||
{
|
||||
ATOMIC_INC(&(handle->stat_val[STAT_CACHE_WRITE_FORBIDEN]));
|
||||
TFE_LOG_DEBUG(handle->logger, "cache write forbiden: %s, bypass:%d, cont_len:%lld, has_cookie:%d, is_html:%d",
|
||||
session->req->req_spec.url,
|
||||
_mid->shall_bypass,
|
||||
content_len,
|
||||
_mid->has_cookie,
|
||||
_mid->is_html);
|
||||
ATOMIC_INC(&(handle->stat_val[STAT_CACHE_WRITE_BYPASS]));
|
||||
return NULL;
|
||||
}
|
||||
@@ -1372,31 +1402,37 @@ void web_cache_write(struct cache_write_context* ctx, const unsigned char * body
|
||||
ATOMIC_ADD(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_WRITE_BYTES]), frag_size);
|
||||
return;
|
||||
}
|
||||
void web_cache_write_end(struct cache_write_context* ctx)
|
||||
int web_cache_write_end(struct cache_write_context* ctx)
|
||||
{
|
||||
int ret=0;
|
||||
int tmp_ret=0, ret=0;
|
||||
struct cache_write_future_ctx* future_ctx=ctx->future_ctx;
|
||||
if(ctx->uploaded_len==ctx->content_len)
|
||||
{
|
||||
ret=tango_cache_update_end(ctx->write_ctx, future_ctx->upload_path, sizeof(future_ctx->upload_path));
|
||||
if(ret<0)
|
||||
tmp_ret=tango_cache_update_end(ctx->write_ctx, future_ctx->upload_path, sizeof(future_ctx->upload_path));
|
||||
if(tmp_ret<0)
|
||||
{
|
||||
//upload too slow or storage server error;
|
||||
TFE_LOG_DEBUG(ctx->ref_cache_handle->logger, "cache upload failed: %s",ctx->future_ctx->url);
|
||||
cache_write_future_ctx_free(ctx->future_ctx);
|
||||
ctx->future_ctx=NULL;
|
||||
ATOMIC_INC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_WRITE_ERR]));
|
||||
ret=-1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret=1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tango_cache_update_cancel(ctx->write_ctx);
|
||||
ATOMIC_INC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_WRITE_CANCEL]));
|
||||
ATOMIC_INC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_WRITE_CANCEL]));
|
||||
ret=-2;
|
||||
}
|
||||
ATOMIC_DEC(&(ctx->ref_cache_handle->stat_val[STAT_CACHE_WRITING]));
|
||||
ctx->write_ctx = NULL;
|
||||
ctx->ref_cache_handle = NULL;
|
||||
free(ctx);
|
||||
return;
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user