diff --git a/platform/src/tcp_stream.cpp b/platform/src/tcp_stream.cpp index e825076..bc7e762 100644 --- a/platform/src/tcp_stream.cpp +++ b/platform/src/tcp_stream.cpp @@ -599,7 +599,7 @@ static void __stream_bev_eventcb(struct bufferevent * bev, short events, void * __stream_bev_readcb(bev, arg); } - fprintf(stderr, "---- eventcb ----, stream = %p, event = %x, dir = %s\n", _stream, events, __str_dir); + //fprintf(stderr, "---- eventcb ----, stream = %p, event = %x, dir = %s\n", _stream, events, __str_dir); goto __close_connection; } @@ -621,8 +621,8 @@ __close_connection: if (*ref_this_conn != NULL) { - fprintf(stderr, "---- eventcb ----, close this connection, " - "stream = %p, event = %x, dir = %s\n", _stream, events, __str_dir); + //fprintf(stderr, "---- eventcb ----, close this connection, " + // "stream = %p, event = %x, dir = %s\n", _stream, events, __str_dir); assert((*ref_this_conn)->on_writing == 0); __conn_private_destory_with_ssl(ev_base, *ref_this_conn, *ref_this_ssl_stream); diff --git a/plugin/business/pangu-http/src/pangu_http.cpp b/plugin/business/pangu-http/src/pangu_http.cpp index 784ced7..46936c3 100644 --- a/plugin/business/pangu-http/src/pangu_http.cpp +++ b/plugin/business/pangu-http/src/pangu_http.cpp @@ -927,7 +927,7 @@ void enforce_control_policy(const struct tfe_stream * stream, const struct tfe_h } void cache_query(const struct tfe_http_session * session, unsigned int thread_id, struct pangu_http_ctx * ctx) { - ctx->f_cache_query=future_create("cache_query", cache_query_on_succ, cache_query_on_fail, ctx); + ctx->f_cache_query=future_create("cache_down", cache_query_on_succ, cache_query_on_fail, ctx); ctx->cache_query_status=async_web_cache_query(g_pangu_rt->cache, thread_id, session->req, ctx->f_cache_query); if(ctx->cache_query_status==WEB_CACHE_QUERING) { @@ -961,7 +961,7 @@ void cache_update(const struct tfe_http_session * session, enum tfe_http_event e { web_cache_update_end(ctx->cache_update_ctx); ctx->cache_update_ctx=NULL; - printf("cache update success: %s\n", ctx->ref_session->req->req_spec.url); + //printf("cache update success: %s\n", ctx->ref_session->req->req_spec.url); } } diff --git a/plugin/business/pangu-http/src/pangu_web_cache.cpp b/plugin/business/pangu-http/src/pangu_web_cache.cpp index 1d43815..4147d0a 100644 --- a/plugin/business/pangu-http/src/pangu_web_cache.cpp +++ b/plugin/business/pangu-http/src/pangu_web_cache.cpp @@ -386,11 +386,35 @@ enum cache_query_status async_web_cache_query(struct cache_handle* handle, unsig query_ctx->is_undefined_obj=is_undefined_obj; p=future_to_promise(f); promise_set_ctx(p, query_ctx, cache_query_ctx_free_cb); - query_ctx->f_tango_cache_fetch=future_create("wrap_cache_qry", wrap_cache_query_on_succ, wrap_cache_query_on_fail, p); + query_ctx->f_tango_cache_fetch=future_create("_cache_qry", wrap_cache_query_on_succ, wrap_cache_query_on_fail, p); ret=tango_cache_fetch_object(handle->clients[thread_id], query_ctx->f_tango_cache_fetch, &meta); assert(ret==0); return WEB_CACHE_QUERING; } +struct wrap_cache_up_ctx +{ + char* url; + time_t start; + struct future* f; +}; +void wrap_cache_up_ctx_free(struct wrap_cache_up_ctx* ctx) +{ + FREE(&(ctx->url)); + future_destroy(ctx->f); + free(ctx); +} +static void wrap_cache_update_on_succ(future_result_t * result, void * user) +{ + struct wrap_cache_up_ctx* ctx=(struct wrap_cache_up_ctx*)user; + printf("cache upload success: %s elapse: %d\n", ctx->url, time(NULL)-ctx->start); + wrap_cache_up_ctx_free(ctx); +} +static void wrap_cache_update_on_fail(enum e_future_error err, const char * what, void * user) +{ + struct wrap_cache_up_ctx* ctx=(struct wrap_cache_up_ctx*)user; + printf("cache upload failed: %s elapse: %d\n", ctx->url, time(NULL)-ctx->start); + wrap_cache_up_ctx_free(ctx); +} struct cache_update_context* web_cache_update_start(struct cache_handle* handle, unsigned int thread_id, const struct tfe_http_session * session) @@ -436,9 +460,16 @@ struct cache_update_context* web_cache_update_start(struct cache_handle* handle, meta.std_hdr[i]=buffer; i++; memcpy(&meta.put, &resp_freshness, sizeof(resp_freshness)); - write_ctx=tango_cache_update_start(handle->clients[thread_id], NULL, &meta); + + struct wrap_cache_up_ctx* wrap_cache_up_ctx=ALLOC(struct wrap_cache_up_ctx, 1); + wrap_cache_up_ctx->url=tfe_strdup(session->req->req_spec.url); + wrap_cache_up_ctx->start=time(NULL); + wrap_cache_up_ctx->f=future_create("cache_up", wrap_cache_update_on_succ, wrap_cache_update_on_fail, wrap_cache_up_ctx); + printf("cache update start: %s\n", wrap_cache_up_ctx->url); + write_ctx=tango_cache_update_start(handle->clients[thread_id], wrap_cache_up_ctx->f, &meta); if(write_ctx==NULL)//exceed maximum cache memory size. { + wrap_cache_up_ctx_free(wrap_cache_up_ctx); return NULL; } if(is_undefined_obj)