mirror of
https://github.com/XRPLF/rippled.git
synced 2026-09-26 15:10:12 +00:00
merge: bring the span-attribute fixes forward from phase7-native-metrics
This commit is contained in:
@@ -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");
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user