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

Function getRangeFinished

fdbclient/NativeAPI.actor.cpp:4179–4232  ·  view source on GitHub ↗

RangeResult or MappedRangeResult

Source from the content-addressed store, hash-verified

4177// TODO: Client should add mapped keys to conflict ranges.
4178template <class RangeResultFamily> // RangeResult or MappedRangeResult
4179void getRangeFinished(Reference<TransactionState> trState,
4180 double startTime,
4181 KeySelector begin,
4182 KeySelector end,
4183 Snapshot snapshot,
4184 Promise<std::pair<Key, Key>> conflictRange,
4185 Reverse reverse,
4186 RangeResultFamily result) {
4187 int64_t bytes = getRangeResultFamilyBytes(result);
4188
4189 trState->cx->transactionBytesRead += bytes;
4190 trState->cx->transactionKeysRead += result.size();
4191
4192 if (trState->trLogInfo) {
4193 trState->trLogInfo->addLog(FdbClientLogEvents::EventGetRange(startTime,
4194 trState->cx->clientLocality.dcId(),
4195 now() - startTime,
4196 bytes,
4197 begin.getKey(),
4198 end.getKey(),
4199 trState->tenant()));
4200 }
4201
4202 if (!snapshot) {
4203 Key rangeBegin;
4204 Key rangeEnd;
4205
4206 if (result.readToBegin) {
4207 rangeBegin = allKeys.begin;
4208 } else if (((!reverse || !result.more || begin.offset > 1) && begin.offset > 0) || result.size() == 0) {
4209 rangeBegin = Key(begin.getKey(), begin.arena());
4210 } else {
4211 rangeBegin = reverse ? result.end()[-1].key : result[0].key;
4212 }
4213
4214 if (end.offset > begin.offset && end.getKey() < rangeBegin) {
4215 rangeBegin = Key(end.getKey(), end.arena());
4216 }
4217
4218 if (result.readThroughEnd) {
4219 rangeEnd = allKeys.end;
4220 } else if (((reverse || !result.more || end.offset <= 0) && end.offset <= 1) || result.size() == 0) {
4221 rangeEnd = Key(end.getKey(), end.arena());
4222 } else {
4223 rangeEnd = keyAfter(reverse ? result[0].key : result.end()[-1].key);
4224 }
4225
4226 if (begin.offset < end.offset && begin.getKey() > rangeEnd) {
4227 rangeEnd = Key(begin.getKey(), begin.arena());
4228 }
4229
4230 conflictRange.send(std::make_pair(rangeBegin, rangeEnd));
4231 }
4232}
4233
4234ACTOR template <class GetKeyValuesFamilyRequest, // GetKeyValuesRequest or GetMappedKeyValuesRequest
4235 class GetKeyValuesFamilyReply, // GetKeyValuesReply or GetMappedKeyValuesReply (It would be nice if

Callers 1

getRangeFunction · 0.85

Calls 11

EventGetRangeClass · 0.85
nowFunction · 0.85
addLogMethod · 0.80
dcIdMethod · 0.80
getKeyMethod · 0.65
KeyClass · 0.50
keyAfterFunction · 0.50
sizeMethod · 0.45
endMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected