Kouhei Sutou
null+****@clear*****
Tue Mar 29 09:36:46 JST 2016
Kouhei Sutou 2016-03-29 09:36:46 +0900 (Tue, 29 Mar 2016) New Revision: e457e2a6e60a61a09bc717834adfebaf287c81be https://github.com/groonga/groonga/commit/e457e2a6e60a61a09bc717834adfebaf287c81be Message: request_canceler: use grn_ctx for request canceler It's for avoiding resource conflict. Modified files: lib/request_canceler.c Modified: lib/request_canceler.c (+13 -6) =================================================================== --- lib/request_canceler.c 2016-03-28 14:21:05 +0900 (1b4ea51) +++ lib/request_canceler.c 2016-03-29 09:36:46 +0900 (09084e9) @@ -30,12 +30,15 @@ struct _grn_request_canceler_entry { grn_ctx *ctx; }; +static grn_ctx grn_the_request_canceler_ctx; static grn_request_canceler *grn_the_request_canceler = NULL; grn_bool grn_request_canceler_init(void) { - grn_ctx *ctx = &grn_gctx; + grn_ctx *ctx = &grn_the_request_canceler_ctx; + + grn_ctx_init(ctx, 0); grn_the_request_canceler = GRN_MALLOC(sizeof(grn_request_canceler)); if (!grn_the_request_canceler) { @@ -64,7 +67,8 @@ grn_request_canceler_register(grn_ctx *ctx, grn_hash *entries = grn_the_request_canceler->entries; grn_id id; void *value; - id = grn_hash_add(&grn_gctx, entries, request_id, size, &value, NULL); + id = grn_hash_add(&grn_the_request_canceler_ctx, + entries, request_id, size, &value, NULL); if (id) { grn_request_canceler_entry *entry = value; entry->ctx = ctx; @@ -80,7 +84,8 @@ grn_request_canceler_unregister(grn_ctx *ctx, MUTEX_LOCK(grn_the_request_canceler->mutex); { grn_hash *entries = grn_the_request_canceler->entries; - grn_hash_delete(&grn_gctx, entries, request_id, size, NULL); + grn_hash_delete(&grn_the_request_canceler_ctx, + entries, request_id, size, NULL); } MUTEX_UNLOCK(grn_the_request_canceler->mutex); @@ -109,9 +114,10 @@ grn_request_canceler_cancel(const char *request_id, unsigned int size) grn_bool canceled = GRN_FALSE; MUTEX_LOCK(grn_the_request_canceler->mutex); { + grn_ctx *ctx = &grn_the_request_canceler_ctx; grn_hash *entries = grn_the_request_canceler->entries; void *value; - if (grn_hash_get(&grn_gctx, entries, request_id, size, &value)) { + if (grn_hash_get(ctx, entries, request_id, size, &value)) { grn_request_canceler_entry *entry = value; if (grn_request_canceler_cancel_entry(entry)) { canceled = GRN_TRUE; @@ -128,7 +134,7 @@ grn_request_canceler_cancel_all(void) grn_bool canceled = GRN_FALSE; MUTEX_LOCK(grn_the_request_canceler->mutex); { - grn_ctx *ctx = &grn_gctx; + grn_ctx *ctx = &grn_the_request_canceler_ctx; grn_hash *entries = grn_the_request_canceler->entries; grn_hash_cursor *cursor; @@ -155,10 +161,11 @@ grn_request_canceler_cancel_all(void) void grn_request_canceler_fin(void) { - grn_ctx *ctx = &grn_gctx; + grn_ctx *ctx = &grn_the_request_canceler_ctx; grn_hash_close(ctx, grn_the_request_canceler->entries); MUTEX_FIN(grn_the_request_canceler->mutex); GRN_FREE(grn_the_request_canceler); grn_the_request_canceler = NULL; + grn_ctx_fin(ctx); } -------------- next part -------------- HTML����������������������������...Download