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

Function maybeDuplicateTSSStreamFragment

fdbclient/NativeAPI.actor.cpp:4704–4722  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4702// User of the stream has to forward the SS's responses to the returned promise stream, if it is set
4703template <class Request, bool P>
4704Optional<TSSDuplicateStreamData<REPLYSTREAM_TYPE(Request)>>
4705maybeDuplicateTSSStreamFragment(Request& req, QueueModel* model, RequestStream<Request, P> const* ssStream) {
4706 if (model) {
4707 Optional<TSSEndpointData> tssData = model->getTssData(ssStream->getEndpoint().token.first());
4708
4709 if (tssData.present()) {
4710 CODE_PROBE(true, "duplicating stream to TSS");
4711 resetReply(req);
4712 // FIXME: optimize to avoid creating new netNotifiedQueueWithAcknowledgements for each stream duplication
4713 RequestStream<Request> tssRequestStream(tssData.get().endpoint);
4714 ReplyPromiseStream<REPLYSTREAM_TYPE(Request)> tssReplyStream = tssRequestStream.getReplyStream(req);
4715 PromiseStream<REPLYSTREAM_TYPE(Request)> ssDuplicateReplyStream;
4716 TSSDuplicateStreamData<REPLYSTREAM_TYPE(Request)> streamData(ssDuplicateReplyStream);
4717 model->addActor.send(tssStreamComparison(req, streamData, tssReplyStream, tssData.get()));
4718 return Optional<TSSDuplicateStreamData<REPLYSTREAM_TYPE(Request)>>(streamData);
4719 }
4720 }
4721 return Optional<TSSDuplicateStreamData<REPLYSTREAM_TYPE(Request)>>();
4722}
4723
4724// Streams all of the KV pairs in a target key range into a ParallelStream fragment
4725ACTOR Future<Void> getRangeStreamFragment(Reference<TransactionState> trState,

Callers 1

Calls 7

resetReplyFunction · 0.85
getTssDataMethod · 0.80
firstMethod · 0.80
getReplyStreamMethod · 0.80
getMethod · 0.65
presentMethod · 0.45
sendMethod · 0.45

Tested by

no test coverage detected