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

Method clear

fdbclient/WriteMap.cpp:160–203  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158}
159
160void WriteMap::clear(KeyRangeRef keys, bool addConflict) {
161 writeMapEmpty = false;
162 if (!addConflict) {
163 clearNoConflict(keys);
164 return;
165 }
166
167 auto& it = scratch_iterator;
168 it.reset(writes, ver);
169 it.skip(keys.begin);
170
171 bool insert_begin = !it.is_cleared_range() || !it.is_conflict_range() || it.is_unreadable();
172
173 if (it.endKey() == keys.end) {
174 ++it;
175 } else if (it.endKey() < keys.end) {
176 it.skip(keys.end);
177 }
178
179 bool insert_end = (it.is_unmodified_range() || !it.is_conflict_range() || it.is_unreadable()) &&
180 (!it.keyAtBegin() || it.beginKey() != keys.end);
181 bool end_coalesce_clear =
182 it.is_cleared_range() && it.beginKey() == keys.end && it.is_conflict_range() && !it.is_unreadable();
183 bool end_conflict = it.is_conflict_range();
184 bool end_cleared = it.is_cleared_range();
185 bool end_unreadable = it.is_unreadable();
186
187 it.tree.clear();
188
189 PTreeImpl::remove(writes,
190 ver,
191 ExtStringRef(keys.begin, !insert_begin ? 1 : 0),
192 ExtStringRef(keys.end, end_coalesce_clear ? 1 : 0));
193
194 if (insert_begin)
195 PTreeImpl::insert(writes, ver, WriteMapEntry(keys.begin, OperationStack(), true, true, true, false, false));
196
197 if (insert_end)
198 PTreeImpl::insert(
199 writes,
200 ver,
201 WriteMapEntry(
202 keys.end, OperationStack(), end_cleared, end_conflict, end_conflict, end_unreadable, end_unreadable));
203}
204
205void WriteMap::addUnmodifiedAndUnreadableRange(KeyRangeRef keys) {
206 auto& it = scratch_iterator;

Callers

nothing calls this directly

Calls 15

ExtStringRefClass · 0.85
insertFunction · 0.85
WriteMapEntryClass · 0.85
OperationStackClass · 0.85
is_cleared_rangeMethod · 0.80
is_conflict_rangeMethod · 0.80
is_unmodified_rangeMethod · 0.80
keyAtBeginMethod · 0.80
clearMethod · 0.65
removeFunction · 0.50
resetMethod · 0.45
skipMethod · 0.45

Tested by

no test coverage detected