From 5acdd2c6dc707550667f72ba8f0bb948e84d04d2 Mon Sep 17 00:00:00 2001 From: Miroslav Crnic Date: Mon, 29 Jul 2024 15:12:44 +0000 Subject: [PATCH] eggsdbtools: remove fix-name-hash-mismatch as fix deployed --- cpp/dbtools/ShardDBTools.cpp | 66 ------------------------------------ cpp/dbtools/ShardDBTools.hpp | 1 - cpp/dbtools/eggsdbtools.cpp | 3 -- 3 files changed, 70 deletions(-) diff --git a/cpp/dbtools/ShardDBTools.cpp b/cpp/dbtools/ShardDBTools.cpp index 87d9b7ba..279e58ef 100644 --- a/cpp/dbtools/ShardDBTools.cpp +++ b/cpp/dbtools/ShardDBTools.cpp @@ -445,69 +445,3 @@ void ShardDBTools::fsck(const std::string& dbPath) { #undef ERROR } - -void ShardDBTools::fixNameHashMismatch(const std::string& dbPath) { - Logger logger(LogLevel::LOG_INFO, STDERR_FILENO, false, false); - std::shared_ptr xmon; - Env env(logger, xmon, "ShardDBTools"); - SharedRocksDB sharedDb(logger, xmon, dbPath, ""); - sharedDb.registerCFDescriptors(ShardDB::getColumnFamilyDescriptors()); - sharedDb.registerCFDescriptors(LogsDB::getColumnFamilyDescriptors()); - sharedDb.registerCFDescriptors(BlockServicesCacheDB::getColumnFamilyDescriptors()); - rocksdb::Options rocksDBOptions; - rocksDBOptions.compression = rocksdb::kLZ4Compression; - rocksDBOptions.bottommost_compression = rocksdb::kZSTD; - sharedDb.open(rocksDBOptions); - auto db = sharedDb.db(); - - { - auto edgesCf = sharedDb.getCF("edges"); - const rocksdb::ReadOptions options; - std::vector keysToDelete; - std::vector> keyValuesToInsert; - - std::unique_ptr it(db->NewIterator(options, edgesCf)); - for (it->SeekToFirst(); it->Valid(); it->Next()) { - auto edgeK = ExternalValue::FromSlice(it->key()); - if (!edgeK().current()) { - continue; - } - auto nameHash = edgeK().nameHash(); - std::string name(edgeK().name().data(), edgeK().name().size()); - auto computedHash = EdgeKey::computeNameHash(HashMode::XXH3_63, BincodeBytesRef(edgeK().name().data(), edgeK().name().size())); - if (nameHash == computedHash) { - continue; - } - const std::string suffix = ".resurrected"; - if (name.compare(name.size() - suffix.size(), suffix.size(), suffix) != 0) { - LOG_ERROR(env, "found an edge with name hash mismatch not ending in '.ressurected': %s", edgeK()); - continue; - } - keysToDelete.emplace_back(it->key().ToString()); - StaticValue newEdgeKey; - newEdgeKey().setDirIdWithCurrentU64(edgeK().dirIdWithCurrentU64()); - newEdgeKey().setName(edgeK().name()); - newEdgeKey().setNameHash(computedHash); - keyValuesToInsert.emplace_back(newEdgeKey.toSlice().ToString(),it->value().ToString()); - } - ROCKS_DB_CHECKED(it->status()); - if (keysToDelete.size() != keyValuesToInsert.size()) { - LOG_ERROR(env, "bug keys to delete different than keys to insert"); - return; - } - if (keysToDelete.size() != 105) { - LOG_ERROR(env, "unexpected number of keys to delete %s", keysToDelete.size()); - return; - } - - rocksdb::WriteBatch batch; - for (const auto& key : keysToDelete) { - batch.Delete(edgesCf, key); - } - for (const auto& [key, value] : keyValuesToInsert) { - batch.Put(edgesCf, key, value); - } - ROCKS_DB_CHECKED(db->Write(rocksdb::WriteOptions(), &batch)); - } - sharedDb.close(); -} diff --git a/cpp/dbtools/ShardDBTools.hpp b/cpp/dbtools/ShardDBTools.hpp index 8a206b49..b290d80b 100644 --- a/cpp/dbtools/ShardDBTools.hpp +++ b/cpp/dbtools/ShardDBTools.hpp @@ -7,5 +7,4 @@ public: static void verifyEqual(const std::string& db1Path, const std::string& db2Path); static void outputUnreleasedState(const std::string& dbPath); static void fsck(const std::string& dbPath); - static void fixNameHashMismatch(const std::string& dbPath); }; diff --git a/cpp/dbtools/eggsdbtools.cpp b/cpp/dbtools/eggsdbtools.cpp index 5346fee6..3bda4238 100644 --- a/cpp/dbtools/eggsdbtools.cpp +++ b/cpp/dbtools/eggsdbtools.cpp @@ -49,9 +49,6 @@ int main(int argc, char** argv) { } else if (arg == "fsck") { std::string dbPath = getNextArg(); ShardDBTools::fsck(dbPath); - } else if (arg == "fix-name-hash-mismatch") { - std::string dbPath = getNextArg(); - ShardDBTools::fixNameHashMismatch(dbPath); } else { dieWithUsage(); }