diff options
| author | fengweihao <[email protected]> | 2023-02-28 14:30:20 +0800 |
|---|---|---|
| committer | fengweihao <[email protected]> | 2023-02-28 14:30:20 +0800 |
| commit | b0f980a3b598009a76d9cd92b44147dc7e13e5de (patch) | |
| tree | afd23853d3a1a5c71afda37db424a6ecc075bb83 /src | |
| parent | a338d8d40555aaee90b0d6334bfc3c64ffa32d06 (diff) | |
The watch slots changes function adds resp code judgmentsv3.0.2
Add a log level and path interface
Diffstat (limited to 'src')
| -rw-r--r-- | src/inc_internal/swarmkv_common.h | 1 | ||||
| -rw-r--r-- | src/swarmkv.c | 9 | ||||
| -rw-r--r-- | src/swarmkv_api.c | 10 | ||||
| -rw-r--r-- | src/swarmkv_keyspace.c | 24 |
4 files changed, 34 insertions, 10 deletions
diff --git a/src/inc_internal/swarmkv_common.h b/src/inc_internal/swarmkv_common.h index f4d8cde..cdf6605 100644 --- a/src/inc_internal/swarmkv_common.h +++ b/src/inc_internal/swarmkv_common.h @@ -69,6 +69,7 @@ struct swarmkv_options unsigned int sync_interval_us; struct log_handle *logger; int loglevel; + const char *logpath; char cluster_announce_ip[MAX_IPV4_ADDR_LEN]; char bind_address[MAX_IPV4_ADDR_LEN]; char consul_agent_host[MAX_IPV4_ADDR_LEN]; diff --git a/src/swarmkv.c b/src/swarmkv.c index 224a2a3..97da504 100644 --- a/src/swarmkv.c +++ b/src/swarmkv.c @@ -1172,7 +1172,14 @@ struct swarmkv *swarmkv_open(struct swarmkv_options *opts, const char *db_name, else { char log_path[1024]=""; - snprintf(log_path, sizeof(log_path), "%s.log", db_name); + if(opts->logpath) + { + snprintf(log_path, sizeof(log_path), "%s/%s.log", opts->logpath, db_name); + } + else + { + snprintf(log_path, sizeof(log_path), "%s.log", db_name); + } db->logger=log_handle_create(log_path, opts->loglevel); } swarmkv_create_thread_ctx(db); diff --git a/src/swarmkv_api.c b/src/swarmkv_api.c index a6fea66..92731f7 100644 --- a/src/swarmkv_api.c +++ b/src/swarmkv_api.c @@ -95,6 +95,16 @@ int swarmkv_options_set_logger(struct swarmkv_options *opts, void *logger) opts->logger=logger; return 0; } +int swarmkv_options_set_log_level(struct swarmkv_options *opts, int loglevel) +{ + opts->loglevel=loglevel; + return 0; +} +int swarmkv_options_set_log_path(struct swarmkv_options *opts, const char *logpath) +{ + opts->logpath=logpath; + return 0; +} int swarmkv_options_set_disable_run_for_leader(struct swarmkv_options *opts) { opts->run_for_leader_flag=0; diff --git a/src/swarmkv_keyspace.c b/src/swarmkv_keyspace.c index e17a445..c03281e 100644 --- a/src/swarmkv_keyspace.c +++ b/src/swarmkv_keyspace.c @@ -807,18 +807,24 @@ void consul_watch_leadership_changes_async(struct swarmkv_keyspace* ks) } void watch_slots_changes_on_success(void *result, void *arg) { + struct evhttp_request *req=(struct evhttp_request*)result; struct swarmkv_keyspace *ks=(struct swarmkv_keyspace*)arg; cJSON *metadata_array=NULL, *metadata=NULL, *value=NULL, *modify_idx=NULL; - int i=0; - - struct key_slot *new_slots=NULL; - struct evhttp_request *req=(struct evhttp_request*)result; - struct evbuffer *buf=NULL; - buf=evhttp_request_get_input_buffer(req); - size_t len = evbuffer_get_length(buf); - sds resp_body_buff=sdsnewlen(SDS_NOINIT, len); - evbuffer_copyout(buf, resp_body_buff, len); + int i=0,resp_code=0; + resp_code=evhttp_request_get_response_code(req); + if(resp_code!=200) + { + log_info(ks->logger, MODULE_SWARMKV_KEYSPACE, "watch slot changes failed: HTTP code %d.", resp_code); + consul_watch_slots_changes_async(ks); + return; + } + struct key_slot *new_slots=NULL; + struct evbuffer *buf=NULL; + buf=evhttp_request_get_input_buffer(req); + size_t len = evbuffer_get_length(buf); + sds resp_body_buff=sdsnewlen(SDS_NOINIT, len); + evbuffer_copyout(buf, resp_body_buff, len); metadata_array=cJSON_Parse(resp_body_buff); metadata=cJSON_GetArrayItem(metadata_array, 0); |
