mirror of
https://github.com/apple/foundationdb.git
synced 2025-05-15 18:32:18 +08:00
Fix isMetadataMutation
This commit is contained in:
parent
12b07d024f
commit
dbeb8772f0
@ -58,7 +58,7 @@ void applyMetadataMutations(UID const& dbgid, Arena& arena, VectorRef<MutationRe
|
||||
for (auto const& m : mutations) {
|
||||
//TraceEvent("MetadataMutation", dbgid).detail("M", m.toString());
|
||||
|
||||
if (m.param1.size() && m.param1[0] == systemKeys.begin[0] && m.type == MutationRef::SetValue) {
|
||||
if (m.type == MutationRef::SetValue && systemKeys.contains(m.param1)) {
|
||||
if(m.param1.startsWith(keyServersPrefix)) {
|
||||
if(keyInfo) {
|
||||
KeyRef k = m.param1.removePrefix(keyServersPrefix);
|
||||
@ -301,8 +301,7 @@ void applyMetadataMutations(UID const& dbgid, Arena& arena, VectorRef<MutationRe
|
||||
confChange = true;
|
||||
TEST(true); // Recovering at a higher version.
|
||||
}
|
||||
}
|
||||
else if (m.param2.size() && m.param2[0] == systemKeys.begin[0] && m.type == MutationRef::ClearRange) {
|
||||
} else if (m.type == MutationRef::ClearRange && KeyRangeRef(m.param1, m.param2).intersects(systemKeys)) {
|
||||
KeyRangeRef range(m.param1, m.param2);
|
||||
|
||||
if (keyServersKeys.intersects(range)) {
|
||||
|
@ -33,8 +33,10 @@
|
||||
|
||||
inline bool isMetadataMutation(MutationRef const& m) {
|
||||
// FIXME: This is conservative - not everything in system keyspace is necessarily processed by applyMetadataMutations
|
||||
return (m.type == MutationRef::SetValue && m.param1.size() && m.param1[0] == systemKeys.begin[0] && !m.param1.startsWith(nonMetadataSystemKeys.begin)) ||
|
||||
(m.type == MutationRef::ClearRange && m.param2.size() && m.param2[0] == systemKeys.begin[0] && !nonMetadataSystemKeys.contains(KeyRangeRef(m.param1, m.param2)) );
|
||||
return (m.type == MutationRef::SetValue && systemKeys.contains(m.param1) &&
|
||||
!nonMetadataSystemKeys.contains(m.param1)) ||
|
||||
(m.type == MutationRef::ClearRange && KeyRangeRef(m.param1, m.param2).intersects(systemKeys) &&
|
||||
!nonMetadataSystemKeys.contains(KeyRangeRef(m.param1, m.param2)));
|
||||
}
|
||||
|
||||
Reference<StorageInfo> getStorageInfo(UID id, std::map<UID, Reference<StorageInfo>>* storageCache, IKeyValueStore* txnStateStore);
|
||||
|
Loading…
x
Reference in New Issue
Block a user