summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorfengweihao <[email protected]>2023-02-28 14:30:20 +0800
committerfengweihao <[email protected]>2023-02-28 14:30:20 +0800
commitb0f980a3b598009a76d9cd92b44147dc7e13e5de (patch)
treeafd23853d3a1a5c71afda37db424a6ecc075bb83 /src
parenta338d8d40555aaee90b0d6334bfc3c64ffa32d06 (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.h1
-rw-r--r--src/swarmkv.c9
-rw-r--r--src/swarmkv_api.c10
-rw-r--r--src/swarmkv_keyspace.c24
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);