bugfix: reactor网络模型的的半包解析错误问题。
全量持久化时清除增量持久化的记录。
This commit is contained in:
@@ -15,6 +15,8 @@ extern kvs_rbtree_t global_rbtree;
|
||||
extern kvs_hash_t global_hash;
|
||||
#endif
|
||||
|
||||
extern int global_cmd_log_fd;
|
||||
|
||||
// 0 suc, -1 err
|
||||
int kvs_need(const uint8_t *p, const uint8_t *end, size_t n) {
|
||||
return (p + n <= end) ? 0 : -1;
|
||||
@@ -202,6 +204,7 @@ void kvs_free_request(kvs_req_t *req) {
|
||||
/**
|
||||
* 输入:req
|
||||
* 输出:rsp
|
||||
* 返回:-1 失败,参数错误,0 成功
|
||||
*/
|
||||
int kvs_execute_one_cmd(const kvs_req_t *req, kvs_rsp_t *rsp_out) {
|
||||
if(!req || !rsp_out) return -1;
|
||||
@@ -382,6 +385,10 @@ void kvs_free_request(kvs_req_t *req) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建单条响应
|
||||
* 返回:-1 失败,>=0 响应长度
|
||||
*/
|
||||
int kvs_build_one_rsp(const kvs_rsp_t *results, uint8_t *response, size_t response_cap){
|
||||
if (!results || !response) return -1;
|
||||
|
||||
@@ -420,6 +427,8 @@ int kvs_save_to_file(){
|
||||
|
||||
#endif
|
||||
|
||||
ksv_clear_log(global_cmd_log_fd);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -533,4 +542,14 @@ int kvs_replay_log(const char *logfile, int logfd){
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* clear log file not close
|
||||
*/
|
||||
int ksv_clear_log(int logfd){
|
||||
if(logfd < 0) return -1;
|
||||
ftruncate(logfd, 0);
|
||||
lseek(logfd, 0, SEEK_SET);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user