@@ -50,6 +50,7 @@ ABSL_DECLARE_FLAG(bool, rdb_sbf_chunked);
5050ABSL_DECLARE_FLAG (bool , serialize_hnsw_index);
5151ABSL_DECLARE_FLAG (bool , deserialize_hnsw_index);
5252ABSL_DECLARE_FLAG (std::string, dbfilename);
53+ ABSL_DECLARE_FLAG (bool , df_snapshot_format);
5354ABSL_DECLARE_FLAG (uint32_t , max_rdb_save_serialize_buffer_capacity);
5455
5556namespace {
@@ -1006,6 +1007,21 @@ TEST_F(RdbTest, LoadSkipsEmptyKey) {
10061007 EXPECT_THAT (Run ({" exists" , " e" }), IntArg (0 ));
10071008}
10081009
1010+ // With RDB-format snapshots the recorded last-save path must keep its .rdb extension, otherwise
1011+ // DEBUG RELOAD flushes the dataset and then fails to load it back.
1012+ TEST_F (RdbTest, DebugReloadRdbFormat) {
1013+ absl::FlagSaver fs;
1014+ ShutdownService (); // clears dbfilename; set it afterwards, as InitWithDbFilename does
1015+ absl::SetFlag (&FLAGS_df_snapshot_format, false );
1016+ absl::SetFlag (&FLAGS_dbfilename, absl::StrCat (" rdbtestdump_" , getpid (), " .rdb" ));
1017+ ResetService ();
1018+
1019+ Run ({" set" , " k1" , " v1" });
1020+ EXPECT_EQ (Run ({" debug" , " reload" }), " OK" );
1021+ EXPECT_THAT (service_->server_family ().GetLastSaveInfo ().file_name , EndsWith (" .rdb" ));
1022+ EXPECT_EQ (Run ({" get" , " k1" }), " v1" );
1023+ }
1024+
10091025// Tests loading a huge stream, where the stream is loaded in multiple partial
10101026// reads.
10111027TEST_F (RdbTest, LoadHugeStream) {
0 commit comments