@@ -2012,6 +2012,31 @@ void ConfigCmd::ConfigGet(std::string& ret) {
20122012 EncodeString (&config_body, " disable_auto_compactions" );
20132013 EncodeString (&config_body, g_pika_conf->disable_auto_compactions () ? " true" : " false" );
20142014 }
2015+ if (pstd::stringmatch (pattern.data (), " incremental-compact-interval" , 1 ) != 0 ) {
2016+ elements += 2 ;
2017+ EncodeString (&config_body, " incremental-compact-interval" );
2018+ EncodeNumber (&config_body, g_pika_conf->incremental_compact_interval ());
2019+ }
2020+ if (pstd::stringmatch (pattern.data (), " incremental-compact-max-files" , 1 ) != 0 ) {
2021+ elements += 2 ;
2022+ EncodeString (&config_body, " incremental-compact-max-files" );
2023+ EncodeNumber (&config_body, g_pika_conf->incremental_compact_max_files ());
2024+ }
2025+ if (pstd::stringmatch (pattern.data (), " incremental-compact-max-time-ms" , 1 ) != 0 ) {
2026+ elements += 2 ;
2027+ EncodeString (&config_body, " incremental-compact-max-time-ms" );
2028+ EncodeNumber (&config_body, g_pika_conf->incremental_compact_max_time_ms ());
2029+ }
2030+ if (pstd::stringmatch (pattern.data (), " incremental-compact-min-rate" , 1 ) != 0 ) {
2031+ elements += 2 ;
2032+ EncodeString (&config_body, " incremental-compact-min-rate" );
2033+ EncodeNumber (&config_body, g_pika_conf->incremental_compact_min_rate ());
2034+ }
2035+ if (pstd::stringmatch (pattern.data (), " incremental-compact-min-file-age" , 1 ) != 0 ) {
2036+ elements += 2 ;
2037+ EncodeString (&config_body, " incremental-compact-min-file-age" );
2038+ EncodeNumber (&config_body, g_pika_conf->incremental_compact_min_file_age ());
2039+ }
20152040 if (pstd::stringmatch (pattern.data (), " network-interface" , 1 ) != 0 ) {
20162041 elements += 2 ;
20172042 EncodeString (&config_body, " network-interface" );
@@ -2345,6 +2370,11 @@ void ConfigCmd::ConfigSet(std::shared_ptr<DB> db) {
23452370 " compact-cron" ,
23462371 " compact-interval" ,
23472372 " disable_auto_compactions" ,
2373+ " incremental-compact-interval" ,
2374+ " incremental-compact-max-files" ,
2375+ " incremental-compact-max-time-ms" ,
2376+ " incremental-compact-min-rate" ,
2377+ " incremental-compact-min-file-age" ,
23482378 " slave-priority" ,
23492379 " sync-window-size" ,
23502380 " slow-cmd-list" ,
@@ -2563,6 +2593,41 @@ void ConfigCmd::ConfigSet(std::shared_ptr<DB> db) {
25632593 }
25642594 g_pika_conf->SetDisableAutoCompaction (value);
25652595 res_.AppendStringRaw (" +OK\r\n " );
2596+ } else if (set_item == " incremental-compact-interval" ) {
2597+ if (pstd::string2int (value.data (), value.size (), &ival) == 0 || ival <= 0 ) {
2598+ res_.AppendStringRaw (" -ERR Invalid argument \' " + value + " \' for CONFIG SET 'incremental-compact-interval'\r\n " );
2599+ return ;
2600+ }
2601+ g_pika_conf->SetIncrementalCompactInterval (static_cast <int >(ival));
2602+ res_.AppendStringRaw (" +OK\r\n " );
2603+ } else if (set_item == " incremental-compact-max-files" ) {
2604+ if (pstd::string2int (value.data (), value.size (), &ival) == 0 || ival <= 0 ) {
2605+ res_.AppendStringRaw (" -ERR Invalid argument \' " + value + " \' for CONFIG SET 'incremental-compact-max-files'\r\n " );
2606+ return ;
2607+ }
2608+ g_pika_conf->SetIncrementalCompactMaxFiles (static_cast <int >(ival));
2609+ res_.AppendStringRaw (" +OK\r\n " );
2610+ } else if (set_item == " incremental-compact-max-time-ms" ) {
2611+ if (pstd::string2int (value.data (), value.size (), &ival) == 0 || ival <= 0 ) {
2612+ res_.AppendStringRaw (" -ERR Invalid argument \' " + value + " \' for CONFIG SET 'incremental-compact-max-time-ms'\r\n " );
2613+ return ;
2614+ }
2615+ g_pika_conf->SetIncrementalCompactMaxTimeMs (static_cast <int >(ival));
2616+ res_.AppendStringRaw (" +OK\r\n " );
2617+ } else if (set_item == " incremental-compact-min-rate" ) {
2618+ if (pstd::string2int (value.data (), value.size (), &ival) == 0 || ival <= 0 || ival > 100 ) {
2619+ res_.AppendStringRaw (" -ERR Invalid argument \' " + value + " \' for CONFIG SET 'incremental-compact-min-rate'\r\n " );
2620+ return ;
2621+ }
2622+ g_pika_conf->SetIncrementalCompactMinRate (static_cast <int >(ival));
2623+ res_.AppendStringRaw (" +OK\r\n " );
2624+ } else if (set_item == " incremental-compact-min-file-age" ) {
2625+ if (pstd::string2int (value.data (), value.size (), &ival) == 0 || ival < 0 ) {
2626+ res_.AppendStringRaw (" -ERR Invalid argument \' " + value + " \' for CONFIG SET 'incremental-compact-min-file-age'\r\n " );
2627+ return ;
2628+ }
2629+ g_pika_conf->SetIncrementalCompactMinFileAge (static_cast <int >(ival));
2630+ res_.AppendStringRaw (" +OK\r\n " );
25662631 } else if (set_item == " rate-limiter-bandwidth" ) {
25672632 int64_t new_bandwidth = 0 ;
25682633 if (pstd::string2int (value.data (), value.size (), &new_bandwidth) == 0 || new_bandwidth <= 0 ) {
0 commit comments