mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-23 00:28:26 -05:00
Re-use AOF buffer when it is small enough
This commit is contained in:
parent
a57225c2cf
commit
f990782f4d
@ -81,9 +81,16 @@ void flushAppendOnlyFile(void) {
|
|||||||
}
|
}
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
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);
|
sdsfree(server.aofbuf);
|
||||||
server.aofbuf = sdsempty();
|
server.aofbuf = sdsempty();
|
||||||
server.appendonly_current_size += nwritten;
|
}
|
||||||
|
|
||||||
/* Don't fsync if no-appendfsync-on-rewrite is set to yes and there are
|
/* Don't fsync if no-appendfsync-on-rewrite is set to yes and there are
|
||||||
* children doing I/O in the background. */
|
* children doing I/O in the background. */
|
||||||
|
@ -94,6 +94,13 @@ void sdsupdatelen(sds s) {
|
|||||||
sh->len = reallen;
|
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) {
|
static sds sdsMakeRoomFor(sds s, size_t addlen) {
|
||||||
struct sdshdr *sh, *newsh;
|
struct sdshdr *sh, *newsh;
|
||||||
size_t free = sdsavail(s);
|
size_t free = sdsavail(s);
|
||||||
|
@ -76,6 +76,7 @@ sds sdscatprintf(sds s, const char *fmt, ...);
|
|||||||
sds sdstrim(sds s, const char *cset);
|
sds sdstrim(sds s, const char *cset);
|
||||||
sds sdsrange(sds s, int start, int end);
|
sds sdsrange(sds s, int start, int end);
|
||||||
void sdsupdatelen(sds s);
|
void sdsupdatelen(sds s);
|
||||||
|
void sdsclear(sds s);
|
||||||
int sdscmp(sds s1, sds s2);
|
int sdscmp(sds s1, sds s2);
|
||||||
sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count);
|
sds *sdssplitlen(char *s, int len, char *sep, int seplen, int *count);
|
||||||
void sdsfreesplitres(sds *tokens, int count);
|
void sdsfreesplitres(sds *tokens, int count);
|
||||||
|
Loading…
Reference in New Issue
Block a user