@@ -466,7 +466,16 @@ bool applyRulesToResponse(const std::vector<dnsdist::rules::ResponseRuleAction>&
466466
467467 DNSResponseAction::Action action = DNSResponseAction::Action::None;
468468 std::string ruleresult;
469+ SpanID parentSpanID;
470+ if (auto tracer = dnsResponse.ids .getTracer (); tracer != nullptr && dnsResponse.ids .tracingEnabled ) {
471+ parentSpanID = tracer->getLastSpanID ();
472+ }
473+
469474 for (const auto & rrule : respRuleActions) {
475+ pdns::trace::dnsdist::Tracer::Closer ruleCloser;
476+ if (auto tracer = dnsResponse.ids .getTracer (); tracer != nullptr && dnsResponse.ids .tracingEnabled ) {
477+ ruleCloser = tracer->openSpan (" Rule: " + rrule.d_name , parentSpanID);
478+ }
470479 if (rrule.d_rule ->matches (&dnsResponse)) {
471480 ++rrule.d_rule ->d_matches ;
472481 action = (*rrule.d_action )(&dnsResponse, &ruleresult);
@@ -522,7 +531,7 @@ bool processResponseAfterRules(PacketBuffer& response, DNSResponse& dnsResponse,
522531{
523532 pdns::trace::dnsdist::Tracer::Closer closer;
524533 if (auto tracer = dnsResponse.ids .getTracer (); tracer != nullptr && dnsResponse.ids .tracingEnabled ) {
525- closer = tracer->openSpan (" processResponseAfterRules" , tracer->getLastSpanID ( ));
534+ closer = tracer->openSpan (" processResponseAfterRules" , tracer->getLastSpanIDForName ( " processResponse " ));
526535 }
527536 bool zeroScope = false ;
528537 if (!fixUpResponse (response, dnsResponse.ids .qname , dnsResponse.ids .origFlags , dnsResponse.ids .ednsAdded , dnsResponse.ids .ecsAdded , dnsResponse.ids .useZeroScope ? &zeroScope : nullptr )) {
@@ -1031,11 +1040,21 @@ static bool applyRulesChainToQuery(const std::vector<dnsdist::rules::RuleAction>
10311040 string ruleresult;
10321041 bool drop = false ;
10331042
1043+ SpanID parentSpanID;
1044+ if (auto tracer = dnsQuestion.ids .getTracer (); tracer != nullptr ) {
1045+ parentSpanID = tracer->getLastSpanID ();
1046+ }
1047+
10341048 for (const auto & rule : rules) {
10351049 if (!rule.d_rule ->matches (&dnsQuestion)) {
10361050 continue ;
10371051 }
10381052
1053+ pdns::trace::dnsdist::Tracer::Closer ruleCloser;
1054+ if (auto tracer = dnsQuestion.ids .getTracer (); tracer != nullptr ) {
1055+ ruleCloser = tracer->openSpan (" Rule: " + rule.d_name , parentSpanID);
1056+ }
1057+
10391058 rule.d_rule ->d_matches ++;
10401059 action = (*rule.d_action )(&dnsQuestion, &ruleresult);
10411060 if (processRulesResult (action, dnsQuestion, ruleresult, drop)) {
@@ -1461,7 +1480,8 @@ static ServerPolicy::SelectedBackend selectBackendForOutgoingQuery(DNSQuestion&
14611480{
14621481 pdns::trace::dnsdist::Tracer::Closer closer;
14631482 if (auto tracer = dnsQuestion.ids .getTracer (); tracer != nullptr && dnsQuestion.ids .tracingEnabled ) {
1464- closer = tracer->openSpan (" selectBackendForOutgoingQuery" , tracer->getLastSpanID ());
1483+ // Not exactly processQuery, but it works for now
1484+ closer = tracer->openSpan (" selectBackendForOutgoingQuery" , tracer->getLastSpanIDForName (" processQuery" ));
14651485 }
14661486
14671487 const auto & policy = serverPool.policy != nullptr ? *serverPool.policy : *dnsdist::configuration::getCurrentRuntimeConfiguration ().d_lbPolicy ;
0 commit comments