MCPcopy Create free account
hub / github.com/apple/foundationdb / ApplyMetadataMutationsImpl

Class ApplyMetadataMutationsImpl

fdbserver/ApplyMetadataMutation.cpp:56–1274  ·  view source on GitHub ↗

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.

Source from the content-addressed store, hash-verified

54// will be done on all commit proxies at the same time. Otherwise, the data stored in txnStateStore will become
55// corrupted.
56class ApplyMetadataMutationsImpl {
57
58public:
59 ApplyMetadataMutationsImpl(const SpanContext& spanContext_,
60 const UID& dbgid_,
61 Arena& arena_,
62 const VectorRef<MutationRef>& mutations_,
63 IKeyValueStore* txnStateStore_,
64 Reference<AsyncVar<ServerDBInfo> const> db)
65 : spanContext(spanContext_), dbgid(dbgid_), arena(arena_), mutations(mutations_), txnStateStore(txnStateStore_),
66 confChange(dummyConfChange), dbInfo(db) {}
67
68 ApplyMetadataMutationsImpl(const SpanContext& spanContext_,
69 Arena& arena_,
70 const VectorRef<MutationRef>& mutations_,
71 ProxyCommitData& proxyCommitData_,
72 Reference<ILogSystem> logSystem_,
73 LogPushData* toCommit_,
74 const std::unordered_map<EncryptCipherDomainId, Reference<BlobCipherKey>>* cipherKeys_,
75 bool& confChange_,
76 Version version,
77 Version popVersion_,
78 bool initialCommit_)
79 : spanContext(spanContext_), dbgid(proxyCommitData_.dbgid), arena(arena_), mutations(mutations_),
80 txnStateStore(proxyCommitData_.txnStateStore), toCommit(toCommit_), cipherKeys(cipherKeys_),
81 confChange(confChange_), logSystem(logSystem_), version(version), popVersion(popVersion_),
82 vecBackupKeys(&proxyCommitData_.vecBackupKeys), keyInfo(&proxyCommitData_.keyInfo),
83 cacheInfo(&proxyCommitData_.cacheInfo),
84 uid_applyMutationsData(proxyCommitData_.firstProxy ? &proxyCommitData_.uid_applyMutationsData : nullptr),
85 commit(proxyCommitData_.commit), cx(proxyCommitData_.cx), committedVersion(&proxyCommitData_.committedVersion),
86 storageCache(&proxyCommitData_.storageCache), tag_popped(&proxyCommitData_.tag_popped),
87 tssMapping(&proxyCommitData_.tssMapping), tenantMap(&proxyCommitData_.tenantMap), initialCommit(initialCommit_),
88 dbInfo(proxyCommitData_.db) {}
89
90 ApplyMetadataMutationsImpl(const SpanContext& spanContext_,
91 ResolverData& resolverData_,
92 const VectorRef<MutationRef>& mutations_,
93 Reference<AsyncVar<ServerDBInfo> const> db)
94 : spanContext(spanContext_), dbgid(resolverData_.dbgid), arena(resolverData_.arena), mutations(mutations_),
95 txnStateStore(resolverData_.txnStateStore), toCommit(resolverData_.toCommit),
96 confChange(resolverData_.confChanges), logSystem(resolverData_.logSystem), popVersion(resolverData_.popVersion),
97 keyInfo(resolverData_.keyInfo), storageCache(resolverData_.storageCache),
98 initialCommit(resolverData_.initialCommit), forResolver(true), dbInfo(db) {}
99
100private:
101 // The following variables are incoming parameters
102
103 const SpanContext& spanContext;
104
105 const UID& dbgid;
106
107 Arena& arena;
108
109 const VectorRef<MutationRef>& mutations;
110
111 // Transaction KV store
112 IKeyValueStore* txnStateStore;
113

Callers 1

applyMetadataMutationsFunction · 0.85

Calls 1

DatabaseClass · 0.70

Tested by

no test coverage detected