merge: bring the span-attribute fixes forward from phase7-native-metrics

This commit is contained in:
Pratik Mankawde
2026-09-03 16:55:16 +01:00
4 changed files with 19 additions and 12 deletions

View File

@@ -289,12 +289,18 @@ inline constexpr auto proposalTrusted = makeStr("proposal_trusted");
inline constexpr auto validationTrusted = makeStr("validation_trusted");
/**
* "validation_status" — which exit the inbound validation took. Set once per
* exit, so a dropped validation (microseconds) is separable from a queued one
* (job wait plus checkValidation). Without it the span name reports two
* unrelated latency distributions and every quantile over it is meaningless.
* "validation_receive_status" — which exit the inbound validation took on
* consensus.validation.receive. Set once per exit, so a dropped validation
* (microseconds) is separable from a queued one (job wait plus
* checkValidation); without it the span reports two unrelated latency
* distributions and every quantile over it is meaningless.
*
* Deliberately NOT `validation_status`: that key belongs to
* consensus.validation.accept and carries what the validation store did
* (`ValStatus`). One key with two value domains would make any aggregation
* that does not also filter on span name meaningless.
*/
inline constexpr auto validationStatus = makeStr("validation_status");
inline constexpr auto validationReceiveStatus = makeStr("validation_receive_status");
} // namespace attr
// ===== Event names ===========================================================
@@ -360,7 +366,7 @@ inline constexpr auto closeAnomaly = makeStr("anomaly");
inline constexpr auto closeOthersClosed = makeStr("others_closed");
inline constexpr auto closeIdle = makeStr("idle");
inline constexpr auto closeNormal = makeStr("normal");
// validation_status values, one per exit of the inbound validation path.
// validation_receive_status values, one per exit of the receive path.
inline constexpr auto validationQueued = makeStr("queued");
inline constexpr auto validationDroppedDiverged = makeStr("dropped_diverged");
inline constexpr auto validationDroppedLoad = makeStr("dropped_load");

View File

@@ -89,7 +89,8 @@ buildLedgerImpl(
built->setAccepted(closeTime, closeResolution, closeTimeCorrect);
buildSpan.setAttribute(ledger_span::attr::ledgerSeq, static_cast<int64_t>(built->header().seq));
buildSpan.setAttribute(
ledger_span::attr::closeTime, static_cast<int64_t>(closeTime.time_since_epoch().count()));
ledger_span::attr::closeTimeRippleEpochS,
static_cast<int64_t>(closeTime.time_since_epoch().count()));
buildSpan.setAttribute(ledger_span::attr::closeTimeCorrect, closeTimeCorrect);
buildSpan.setAttribute(
ledger_span::attr::closeResolutionMs,

View File

@@ -34,8 +34,8 @@ namespace attr {
* Canonical shared constants (defined in SpanNames.h).
*/
using ::xrpl::telemetry::attr::closeResolutionMs;
using ::xrpl::telemetry::attr::closeTime;
using ::xrpl::telemetry::attr::closeTimeCorrect;
using ::xrpl::telemetry::attr::closeTimeRippleEpochS;
using ::xrpl::telemetry::attr::ledgerHash;
using ::xrpl::telemetry::attr::ledgerSeq;

View File

@@ -2706,7 +2706,7 @@ PeerImp::onMessage(std::shared_ptr<protocol::TMValidation> const& m)
static_cast<int64_t>(val->getSignTime().time_since_epoch().count()));
}
// validation_status is set once on each exit below, not as a default
// validation_receive_status is set once on each exit below, not as a default
// here, to avoid OTel SDK attribute duplication. It is what separates
// the microsecond drop paths from the queued path, which also covers
// job wait and checkValidation.
@@ -2715,7 +2715,7 @@ PeerImp::onMessage(std::shared_ptr<protocol::TMValidation> const& m)
if (span && *span)
{
span->setAttribute(
telemetry::consensus::span::attr::validationStatus,
telemetry::consensus::span::attr::validationReceiveStatus,
telemetry::consensus::span::val::validationDroppedDiverged);
}
JLOG(pJournal_.debug()) << "Dropping untrusted validation from diverged peer";
@@ -2726,7 +2726,7 @@ PeerImp::onMessage(std::shared_ptr<protocol::TMValidation> const& m)
if (span && *span)
{
span->setAttribute(
telemetry::consensus::span::attr::validationStatus,
telemetry::consensus::span::attr::validationReceiveStatus,
telemetry::consensus::span::val::validationQueued);
}
std::string const name = isTrusted ? "ChkTrust" : "ChkUntrust";
@@ -2745,7 +2745,7 @@ PeerImp::onMessage(std::shared_ptr<protocol::TMValidation> const& m)
if (span && *span)
{
span->setAttribute(
telemetry::consensus::span::attr::validationStatus,
telemetry::consensus::span::attr::validationReceiveStatus,
telemetry::consensus::span::val::validationDroppedLoad);
}
JLOG(pJournal_.debug()) << "Dropping untrusted validation for load";