bugfix: reactor网络模型的的半包解析错误问题。

全量持久化时清除增量持久化的记录。
This commit is contained in:
2026-01-08 16:20:00 +08:00
parent 3cc97b9454
commit de21fe94ec
10 changed files with 282 additions and 121 deletions

View File

@@ -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;
}