fixup! Enable sharded RocksDB storage engine for PhysicalShardMove

This commit is contained in:
Xiaoge Su 2023-08-28 13:58:40 -07:00
parent 1a6114a66f
commit 5a12d12774
4 changed files with 23 additions and 4 deletions

View File

@ -2793,7 +2793,7 @@ using namespace std::literals;
} // namespace } // namespace
ACTOR void setupAndRun(std::string dataFolder, ACTOR void simulationSetupAndRun(std::string dataFolder,
const char* testFile, const char* testFile,
bool rebooting, bool rebooting,
bool restoring, bool restoring,
@ -2829,7 +2829,12 @@ ACTOR void setupAndRun(std::string dataFolder,
state bool allowDefaultTenant = testConfig.allowDefaultTenant; state bool allowDefaultTenant = testConfig.allowDefaultTenant;
state bool allowCreatingTenants = testConfig.allowCreatingTenants; state bool allowCreatingTenants = testConfig.allowCreatingTenants;
if (!SERVER_KNOBS->SHARD_ENCODE_LOCATION_METADATA) { if (!SERVER_KNOBS->SHARD_ENCODE_LOCATION_METADATA &&
// NOTE: PhysicalShardMove is required to have SHARDED_ROCKSDB storage engine working.
// Inside the TOML file, the SHARD_ENCODE_LOCATION_METADATA is overridden, however, the
// override will not take effect until the test starts. Here, we do an additional check
// for this special simulation test.
std::string_view(testFile).find("PhysicalShardMove") == std::string_view::npos) {
testConfig.storageEngineExcludeTypes.insert(SimulationStorageEngine::SHARDED_ROCKSDB); testConfig.storageEngineExcludeTypes.insert(SimulationStorageEngine::SHARDED_ROCKSDB);
} }

View File

@ -2336,7 +2336,8 @@ int main(int argc, char* argv[]) {
"shard_encode_location_metadata", "shard_encode_location_metadata",
KnobValue::create(ini.GetBoolValue("META", "enableShardEncodeLocationMetadata", false))); KnobValue::create(ini.GetBoolValue("META", "enableShardEncodeLocationMetadata", false)));
} }
setupAndRun(dataFolder, opts.testFile, opts.restarting, (isRestoring >= 1), opts.whitelistBinPaths); simulationSetupAndRun(
dataFolder, opts.testFile, opts.restarting, (isRestoring >= 1), opts.whitelistBinPaths);
g_simulator->run(); g_simulator->run();
} else if (role == ServerRole::FDBD) { } else if (role == ServerRole::FDBD) {
// Update the global blob credential files list so that both fast // Update the global blob credential files list so that both fast

View File

@ -22,8 +22,14 @@
#define FDBSERVER_SIMULATEDCLUSTER_H #define FDBSERVER_SIMULATEDCLUSTER_H
#pragma once #pragma once
#include <string>
#include <cstdint>
#include "fdbclient/DatabaseConfiguration.h"
#include "flow/Optional.h"
// The function at present is only called through "fdbserver -r simulation" // The function at present is only called through "fdbserver -r simulation"
void setupAndRun(std::string const& dataFolder, void simulationSetupAndRun(std::string const& dataFolder,
const char* const& testFile, const char* const& testFile,
bool const& rebooting, bool const& rebooting,
bool const& restoring, bool const& restoring,

View File

@ -8,7 +8,14 @@ allowDefaultTenant = false
disableTss = true disableTss = true
[[knobs]] [[knobs]]
# This knob is commented out since the knob override is done *after* the simulation system is set up. However,
# this is not going to completely work:
# The purpose of setting the knob to true was to enable the shard rocksdb storage engine
# The shard rocksdb storage engine is set up before this knob is overridden
# The temporary fix is that in SimulatedCluster.cpp:simulationSetupAndRun, we are doing one additional check
# so for this PhysicalShardMove test, the shard RocksDB storage engine is always turned on.
shard_encode_location_metadata = true shard_encode_location_metadata = true
# enable_dd_physical_shard = true # enable_dd_physical_shard = true
# min_byte_sampling_probability = 0.99 # min_byte_sampling_probability = 0.99
# rocksdb_read_range_reuse_iterators = false # rocksdb_read_range_reuse_iterators = false