Implent the force-backlog-disk-reserve flag
Former-commit-id: d39f7f4407f8935b1540dd302be3e24ac02c5700
This commit is contained in:
parent
d0e9aab2e7
commit
3b83248db6
2
deps/rocksdb
vendored
2
deps/rocksdb
vendored
@ -1 +1 @@
|
|||||||
Subproject commit c3034fce329017036c807e01261729bfc11a5d62
|
Subproject commit e3169e3ea8762d2f34880742106858a23c8dc8b7
|
@ -2852,6 +2852,7 @@ standardConfig configs[] = {
|
|||||||
createULongConfig("loading-process-events-interval-bytes", NULL, MODIFIABLE_CONFIG, 0, LONG_MAX, g_pserver->loading_process_events_interval_bytes, 2*1024*1024, MEMORY_CONFIG, NULL, NULL),
|
createULongConfig("loading-process-events-interval-bytes", NULL, MODIFIABLE_CONFIG, 0, LONG_MAX, g_pserver->loading_process_events_interval_bytes, 2*1024*1024, MEMORY_CONFIG, NULL, NULL),
|
||||||
createBoolConfig("multi-master-no-forward", NULL, MODIFIABLE_CONFIG, cserver.multimaster_no_forward, 0, validateMultiMasterNoForward, NULL),
|
createBoolConfig("multi-master-no-forward", NULL, MODIFIABLE_CONFIG, cserver.multimaster_no_forward, 0, validateMultiMasterNoForward, NULL),
|
||||||
createBoolConfig("allow-write-during-load", NULL, MODIFIABLE_CONFIG, g_pserver->fWriteDuringActiveLoad, 0, NULL, NULL),
|
createBoolConfig("allow-write-during-load", NULL, MODIFIABLE_CONFIG, g_pserver->fWriteDuringActiveLoad, 0, NULL, NULL),
|
||||||
|
createBoolConfig("force-backlog-disk-reserve", NULL, MODIFIABLE_CONFIG, cserver.force_backlog_disk, 0, NULL, NULL),
|
||||||
|
|
||||||
#ifdef USE_OPENSSL
|
#ifdef USE_OPENSSL
|
||||||
createIntConfig("tls-port", NULL, MODIFIABLE_CONFIG, 0, 65535, g_pserver->tls_port, 0, INTEGER_CONFIG, NULL, updateTLSPort), /* TCP port. */
|
createIntConfig("tls-port", NULL, MODIFIABLE_CONFIG, 0, 65535, g_pserver->tls_port, 0, INTEGER_CONFIG, NULL, updateTLSPort), /* TCP port. */
|
||||||
|
@ -220,7 +220,12 @@ void createReplicationBacklog(void) {
|
|||||||
serverLog(LL_WARNING, "Failed to create disk backlog, will use memory only");
|
serverLog(LL_WARNING, "Failed to create disk backlog, will use memory only");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
g_pserver->repl_backlog = (char*)zmalloc(g_pserver->repl_backlog_size, MALLOC_LOCAL);
|
if (cserver.force_backlog_disk && g_pserver->repl_backlog_disk != nullptr) {
|
||||||
|
g_pserver->repl_backlog = g_pserver->repl_backlog_disk;
|
||||||
|
g_pserver->repl_backlog_size = cserver.repl_backlog_disk_size;
|
||||||
|
} else {
|
||||||
|
g_pserver->repl_backlog = (char*)zmalloc(g_pserver->repl_backlog_size, MALLOC_LOCAL);
|
||||||
|
}
|
||||||
g_pserver->repl_backlog_histlen = 0;
|
g_pserver->repl_backlog_histlen = 0;
|
||||||
g_pserver->repl_backlog_idx = 0;
|
g_pserver->repl_backlog_idx = 0;
|
||||||
g_pserver->repl_backlog_start = g_pserver->master_repl_offset;
|
g_pserver->repl_backlog_start = g_pserver->master_repl_offset;
|
||||||
@ -272,7 +277,7 @@ void resizeReplicationBacklog(long long newsize) {
|
|||||||
newsize = std::max(newsize, g_pserver->master_repl_offset - earliest_off);
|
newsize = std::max(newsize, g_pserver->master_repl_offset - earliest_off);
|
||||||
|
|
||||||
if (cserver.repl_backlog_disk_size != 0) {
|
if (cserver.repl_backlog_disk_size != 0) {
|
||||||
if (newsize > g_pserver->repl_backlog_config_size) {
|
if (newsize > g_pserver->repl_backlog_config_size || cserver.force_backlog_disk) {
|
||||||
if (g_pserver->repl_backlog == g_pserver->repl_backlog_disk)
|
if (g_pserver->repl_backlog == g_pserver->repl_backlog_disk)
|
||||||
return; // Can't do anything more
|
return; // Can't do anything more
|
||||||
serverLog(LL_NOTICE, "Switching to disk backed replication backlog due to exceeding memory limits");
|
serverLog(LL_NOTICE, "Switching to disk backed replication backlog due to exceeding memory limits");
|
||||||
@ -5718,6 +5723,8 @@ void trimReplicationBacklog() {
|
|||||||
return; // We're already a good size
|
return; // We're already a good size
|
||||||
if (g_pserver->repl_lowest_off > 0 && (g_pserver->master_repl_offset - g_pserver->repl_lowest_off + 1) > g_pserver->repl_backlog_config_size)
|
if (g_pserver->repl_lowest_off > 0 && (g_pserver->master_repl_offset - g_pserver->repl_lowest_off + 1) > g_pserver->repl_backlog_config_size)
|
||||||
return; // There is untransmitted data we can't truncate
|
return; // There is untransmitted data we can't truncate
|
||||||
|
if (cserver.force_backlog_disk && g_pserver->repl_backlog == g_pserver->repl_backlog_disk)
|
||||||
|
return; // We're already in the disk backlog and we're told to stay there
|
||||||
|
|
||||||
serverLog(LL_NOTICE, "Reclaiming %lld replication backlog bytes", g_pserver->repl_backlog_size - g_pserver->repl_backlog_config_size);
|
serverLog(LL_NOTICE, "Reclaiming %lld replication backlog bytes", g_pserver->repl_backlog_size - g_pserver->repl_backlog_config_size);
|
||||||
resizeReplicationBacklog(g_pserver->repl_backlog_config_size);
|
resizeReplicationBacklog(g_pserver->repl_backlog_config_size);
|
||||||
|
@ -2178,6 +2178,7 @@ struct redisServerConst {
|
|||||||
int fForkBgSave = false;
|
int fForkBgSave = false;
|
||||||
int time_thread_priority = false;
|
int time_thread_priority = false;
|
||||||
long long repl_backlog_disk_size = 0;
|
long long repl_backlog_disk_size = 0;
|
||||||
|
int force_backlog_disk = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct redisServer {
|
struct redisServer {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user