mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-22 16:18:28 -05:00
Re-use AOF buffer when it is small enough
This commit is contained in:
parent
a57225c2cf
commit
f990782f4d
11
src/aof.c
11
src/aof.c
@ -81,10 +81,17 @@ void flushAppendOnlyFile(void) {
|
||||
}
|
||||
exit(1);
|
||||
}
|
||||
sdsfree(server.aofbuf);
|
||||
server.aofbuf = sdsempty();
|
||||
server.appendonly_current_size += nwritten;
|
||||
|
||||
/* Re-use AOF buffer when it is small enough. The maximum comes from the
|
||||
* arena size of 4k minus some overhead (but is otherwise arbitrary). */
|
||||
if ((sdslen(server.aofbuf)+sdsavail(server.aofbuf)) < 4000) {
|
||||
sdsclear(server.aofbuf);
|
||||
} else {
|
||||
sdsfree(server.aofbuf);
|
||||
server.aofbuf = sdsempty();
|
||||
}
|
||||
|
||||
/* Don't fsync if no-appendfsync-on-rewrite is set to yes and there are
|
||||
* children doing I/O in the background. */
|
||||
if (server.no_appendfsync_on_rewrite &&
|
||||
|
@ -94,6 +94,13 @@ void sdsupdatelen(sds s) {
|
||||
sh->len = reallen;
|
||||
}
|
||||
|
||||
void sdsclear(sds s) {
|
||||
struct sdshdr *sh = (void*) (s-(sizeof(struct sdshdr)));
|
||||
sh->free += sh->len;
|
||||
sh->len = 0;
|
||||
sh->buf[0] = '\0';
|
||||
}
|
||||
|
||||
static sds sdsMakeRoomFor(sds s, size_t addlen) {
|
||||
struct sdshdr *sh, *newsh;
|
||||
size_t free = sdsavail(s);
|
||||
|
@ -76,6 +76,7 @@ sds sdscatprintf(sds s, const char *fmt, ...);
|
||||
sds sdstrim(sds s, const char *cset);
|
||||
sds sdsrange(sds s, int start, int end);
|
||||
void sdsupdatelen(sds s);
|
||||
void sdsclear(sds s);
|
||||
int sdscmp(sds s1, sds s2);
|
||||
sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count);
|
||||
void sdsfreesplitres(sds *tokens, int count);
|
||||
|
Loading…
Reference in New Issue
Block a user