From f3ebc47e756ef8bfdc8394b570df3056344c2af8 Mon Sep 17 00:00:00 2001 From: Dan Lambright Date: Wed, 29 Sep 2021 09:46:54 -0400 Subject: [PATCH] Respond to comments 9/27 --- fdbserver/ApplyMetadataMutation.cpp | 36 ---------------------------- fdbserver/ApplyMetadataMutation.h | 37 ++++++++++++++++++++++++++++- 2 files changed, 36 insertions(+), 37 deletions(-) diff --git a/fdbserver/ApplyMetadataMutation.cpp b/fdbserver/ApplyMetadataMutation.cpp index bd08a77526..2398451e2a 100644 --- a/fdbserver/ApplyMetadataMutation.cpp +++ b/fdbserver/ApplyMetadataMutation.cpp @@ -45,10 +45,6 @@ Reference getStorageInfo(UID id, } namespace { -inline bool isSystemKey(KeyRef key) { - return key.size() && key[0] == systemKeys.begin[0]; -} - // It is incredibly important that any modifications to txnStateStore are done in such a way that the same operations // will be done on all commit proxies at the same time. Otherwise, the data stored in txnStateStore will become // corrupted. @@ -1047,35 +1043,3 @@ void applyMetadataMutations(SpanID const& spanContext, IKeyValueStore* txnStateStore) { ApplyMetadataMutationsImpl(spanContext, dbgid, arena, mutations, txnStateStore).apply(); } - -bool containsMetadataMutation(const VectorRef& mutations) { - for (auto const& m : mutations) { - - if (m.type == MutationRef::SetValue && isSystemKey(m.param1)) { - if (m.param1.startsWith(globalKeysPrefix) || (m.param1.startsWith(cacheKeysPrefix)) || - (m.param1.startsWith(configKeysPrefix)) || (m.param1.startsWith(serverListPrefix)) || - (m.param1.startsWith(storageCachePrefix)) || (m.param1.startsWith(serverTagPrefix)) || - (m.param1.startsWith(tssMappingKeys.begin)) || (m.param1.startsWith(tssQuarantineKeys.begin)) || - (m.param1.startsWith(applyMutationsEndRange.begin)) || - (m.param1.startsWith(applyMutationsKeyVersionMapRange.begin)) || - (m.param1.startsWith(logRangesRange.begin)) || (m.param1.startsWith(serverKeysPrefix)) || - (m.param1.startsWith(keyServersPrefix)) || (m.param1.startsWith(cacheKeysPrefix))) { - return true; - } - } else if (m.type == MutationRef::ClearRange && isSystemKey(m.param2)) { - KeyRangeRef range(m.param1, m.param2); - if ((keyServersKeys.intersects(range)) || (configKeys.intersects(range)) || - (serverListKeys.intersects(range)) || (tagLocalityListKeys.intersects(range)) || - (serverTagKeys.intersects(range)) || (serverTagHistoryKeys.intersects(range)) || - (range.intersects(applyMutationsEndRange)) || (range.intersects(applyMutationsKeyVersionMapRange)) || - (range.intersects(logRangesRange)) || (tssMappingKeys.intersects(range)) || - (tssQuarantineKeys.intersects(range)) || (range.contains(coordinatorsKey)) || - (range.contains(databaseLockedKey)) || (range.contains(metadataVersionKey)) || - (range.contains(mustContainSystemMutationsKey)) || (range.contains(writeRecoveryKey)) || - (range.intersects(testOnlyTxnStateStorePrefixRange))) { - return true; - } - } - } - return false; -} diff --git a/fdbserver/ApplyMetadataMutation.h b/fdbserver/ApplyMetadataMutation.h index c90b0b2ce8..37407d771c 100644 --- a/fdbserver/ApplyMetadataMutation.h +++ b/fdbserver/ApplyMetadataMutation.h @@ -63,6 +63,41 @@ void applyMetadataMutations(SpanID const& spanContext, Arena& arena, const VectorRef& mutations, IKeyValueStore* txnStateStore); -bool containsMetadataMutation(const VectorRef& mutations); + +inline bool isSystemKey(KeyRef key) { + return key.size() && key[0] == systemKeys.begin[0]; +} + +inline bool containsMetadataMutation(const VectorRef& mutations) { + for (auto const& m : mutations) { + + if (m.type == MutationRef::SetValue && isSystemKey(m.param1)) { + if (m.param1.startsWith(globalKeysPrefix) || (m.param1.startsWith(cacheKeysPrefix)) || + (m.param1.startsWith(configKeysPrefix)) || (m.param1.startsWith(serverListPrefix)) || + (m.param1.startsWith(storageCachePrefix)) || (m.param1.startsWith(serverTagPrefix)) || + (m.param1.startsWith(tssMappingKeys.begin)) || (m.param1.startsWith(tssQuarantineKeys.begin)) || + (m.param1.startsWith(applyMutationsEndRange.begin)) || + (m.param1.startsWith(applyMutationsKeyVersionMapRange.begin)) || + (m.param1.startsWith(logRangesRange.begin)) || (m.param1.startsWith(serverKeysPrefix)) || + (m.param1.startsWith(keyServersPrefix)) || (m.param1.startsWith(cacheKeysPrefix))) { + return true; + } + } else if (m.type == MutationRef::ClearRange && isSystemKey(m.param2)) { + KeyRangeRef range(m.param1, m.param2); + if ((keyServersKeys.intersects(range)) || (configKeys.intersects(range)) || + (serverListKeys.intersects(range)) || (tagLocalityListKeys.intersects(range)) || + (serverTagKeys.intersects(range)) || (serverTagHistoryKeys.intersects(range)) || + (range.intersects(applyMutationsEndRange)) || (range.intersects(applyMutationsKeyVersionMapRange)) || + (range.intersects(logRangesRange)) || (tssMappingKeys.intersects(range)) || + (tssQuarantineKeys.intersects(range)) || (range.contains(coordinatorsKey)) || + (range.contains(databaseLockedKey)) || (range.contains(metadataVersionKey)) || + (range.contains(mustContainSystemMutationsKey)) || (range.contains(writeRecoveryKey)) || + (range.intersects(testOnlyTxnStateStorePrefixRange))) { + return true; + } + } + } + return false; +} #endif