diff --git a/include/xrpl/telemetry/SpanNames.h b/include/xrpl/telemetry/SpanNames.h index 685e88db6a..78150d56ac 100644 --- a/include/xrpl/telemetry/SpanNames.h +++ b/include/xrpl/telemetry/SpanNames.h @@ -111,6 +111,12 @@ inline constexpr auto xrplNode = join(seg::xrpl, makeStr("node")); inline constexpr auto nodeAmendmentBlocked = join(xrplNode, makeStr("amendment_blocked")); /// "xrpl.node.server_state" — resource attribute key. inline constexpr auto nodeServerState = join(xrplNode, makeStr("server_state")); + +/// Canonical shared attrs (rule 5 — kept xrpl..* form). +/// Defined once here, aliased by domain-specific headers. +inline constexpr auto txHash = join(join(seg::xrpl, seg::tx), makeStr("hash")); +inline constexpr auto peerId = join(join(seg::xrpl, seg::peer), makeStr("id")); +inline constexpr auto ledgerSeq = join(join(seg::xrpl, seg::ledger), makeStr("seq")); } // namespace attr // ===== Shared attribute values ============================================= diff --git a/src/xrpld/app/misc/NetworkOPs.cpp b/src/xrpld/app/misc/NetworkOPs.cpp index ff7d24dd26..a956f3413f 100644 --- a/src/xrpld/app/misc/NetworkOPs.cpp +++ b/src/xrpld/app/misc/NetworkOPs.cpp @@ -1325,7 +1325,7 @@ NetworkOPsImp::processTransaction( { using namespace telemetry; auto span = std::make_shared(txProcessSpan(transaction->getID())); - span->setAttribute(tx_span::attr::hash, to_string(transaction->getID()).c_str()); + span->setAttribute(tx_span::attr::txHash, to_string(transaction->getID()).c_str()); span->setAttribute(tx_span::attr::local, bLocal); auto ev = m_job_queue.makeLoadEvent(jtTXN_PROC, "ProcessTXN"); diff --git a/src/xrpld/app/misc/TxSpanNames.h b/src/xrpld/app/misc/TxSpanNames.h index 091213959e..964246fcd6 100644 --- a/src/xrpld/app/misc/TxSpanNames.h +++ b/src/xrpld/app/misc/TxSpanNames.h @@ -41,25 +41,20 @@ inline constexpr auto process = join(prefix::tx, op::process); // ===== Attribute keys ====================================================== namespace attr { -inline constexpr auto xrplTx = join(seg::xrpl, seg::tx); +/// Canonical shared constants (defined in SpanNames.h). +using ::xrpl::telemetry::attr::peerId; +using ::xrpl::telemetry::attr::txHash; -/// "xrpl.tx.hash" -inline constexpr auto hash = join(xrplTx, makeStr("hash")); -/// "xrpl.tx.local" -inline constexpr auto local = join(xrplTx, makeStr("local")); -/// "xrpl.tx.path" -inline constexpr auto path = join(xrplTx, makeStr("path")); -/// "xrpl.tx.suppressed" -inline constexpr auto suppressed = join(xrplTx, makeStr("suppressed")); -/// "xrpl.tx.status" -inline constexpr auto status = join(xrplTx, makeStr("status")); - -inline constexpr auto xrplPeer = join(seg::xrpl, seg::peer); - -/// "xrpl.peer.id" -inline constexpr auto peerId = join(xrplPeer, makeStr("id")); -/// "xrpl.peer.version" -inline constexpr auto peerVersion = join(xrplPeer, makeStr("version")); +/// "local" — whether tx originated locally. +inline constexpr auto local = makeStr("local"); +/// "path" — sync or async processing path. +inline constexpr auto path = makeStr("path"); +/// "suppressed" — whether tx was suppressed as duplicate. +inline constexpr auto suppressed = makeStr("suppressed"); +/// "tx_status" — domain-qualified (collides with rpc_status, txq_status). +inline constexpr auto txStatus = makeStr("tx_status"); +/// "peer_version" — version of peer that sent the tx. +inline constexpr auto peerVersion = makeStr("peer_version"); } // namespace attr // ===== Attribute values ==================================================== diff --git a/src/xrpld/app/misc/detail/TxQSpanNames.h b/src/xrpld/app/misc/detail/TxQSpanNames.h index 4f18e82ae7..4268a8f5b4 100644 --- a/src/xrpld/app/misc/detail/TxQSpanNames.h +++ b/src/xrpld/app/misc/detail/TxQSpanNames.h @@ -71,30 +71,28 @@ inline constexpr auto cleanup = makeStr("cleanup"); // ===== Attribute keys ====================================================== namespace attr { -inline constexpr auto xrplTxq = join(seg::xrpl, makeStr("txq")); +/// Canonical shared constants (defined in SpanNames.h). +using ::xrpl::telemetry::attr::ledgerSeq; +using ::xrpl::telemetry::attr::txHash; -/// "xrpl.txq.tx_hash" -inline constexpr auto txHash = join(xrplTxq, makeStr("tx_hash")); -/// "xrpl.txq.status" -inline constexpr auto status = join(xrplTxq, makeStr("status")); -/// "xrpl.txq.fee_level_paid" -inline constexpr auto feeLevelPaid = join(xrplTxq, makeStr("fee_level_paid")); -/// "xrpl.txq.required_fee_level" -inline constexpr auto requiredFeeLevel = join(xrplTxq, makeStr("required_fee_level")); -/// "xrpl.txq.queue_size" -inline constexpr auto queueSize = join(xrplTxq, makeStr("queue_size")); -/// "xrpl.txq.ledger_changed" -inline constexpr auto ledgerChanged = join(xrplTxq, makeStr("ledger_changed")); -/// "xrpl.txq.ledger_seq" -inline constexpr auto ledgerSeq = join(xrplTxq, makeStr("ledger_seq")); -/// "xrpl.txq.expired_count" -inline constexpr auto expiredCount = join(xrplTxq, makeStr("expired_count")); -/// "xrpl.txq.ter_code" -inline constexpr auto terCode = join(xrplTxq, makeStr("ter_code")); -/// "xrpl.txq.retries_remaining" -inline constexpr auto retriesRemaining = join(xrplTxq, makeStr("retries_remaining")); -/// "xrpl.txq.num_cleared" -inline constexpr auto numCleared = join(xrplTxq, makeStr("num_cleared")); +/// "txq_status" — domain-qualified (collides with tx_status, rpc_status). +inline constexpr auto txqStatus = makeStr("txq_status"); +/// "fee_level_paid" — fee level paid by queued tx. +inline constexpr auto feeLevelPaid = makeStr("fee_level_paid"); +/// "required_fee_level" — minimum fee level for inclusion. +inline constexpr auto requiredFeeLevel = makeStr("required_fee_level"); +/// "queue_size" — current TxQ depth. +inline constexpr auto queueSize = makeStr("queue_size"); +/// "ledger_changed" — whether ledger changed since last attempt. +inline constexpr auto ledgerChanged = makeStr("ledger_changed"); +/// "expired_count" — number of expired entries cleared. +inline constexpr auto expiredCount = makeStr("expired_count"); +/// "ter_code" — transaction engine result code. +inline constexpr auto terCode = makeStr("ter_code"); +/// "retries_remaining" — retries left before discard. +inline constexpr auto retriesRemaining = makeStr("retries_remaining"); +/// "num_cleared" — entries cleared in batch. +inline constexpr auto numCleared = makeStr("num_cleared"); } // namespace attr // ===== Attribute values ==================================================== diff --git a/src/xrpld/overlay/detail/PeerImp.cpp b/src/xrpld/overlay/detail/PeerImp.cpp index 1f19847cda..f281246b1c 100644 --- a/src/xrpld/overlay/detail/PeerImp.cpp +++ b/src/xrpld/overlay/detail/PeerImp.cpp @@ -1444,7 +1444,7 @@ PeerImp::handleTransaction( using namespace telemetry; auto span = std::make_shared(txReceiveSpan(txID, *m)); - span->setAttribute(tx_span::attr::hash, to_string(txID).c_str()); + span->setAttribute(tx_span::attr::txHash, to_string(txID).c_str()); span->setAttribute(tx_span::attr::peerId, static_cast(id_)); if (auto const version = getVersion(); !version.empty()) span->setAttribute(tx_span::attr::peerVersion, version.c_str()); @@ -1452,7 +1452,7 @@ PeerImp::handleTransaction( // on the span. The suppressed path overrides these when the // transaction has already been seen via HashRouter. span->setAttribute(tx_span::attr::suppressed, false); - span->setAttribute(tx_span::attr::status, "new"); + span->setAttribute(tx_span::attr::txStatus, "new"); // Charge strongly for attempting to relay a txn with tfInnerBatchTxn // LCOV_EXCL_START @@ -1490,7 +1490,7 @@ PeerImp::handleTransaction( // we have seen this transaction recently if (any(flags & HashRouterFlags::BAD)) { - span->setAttribute(tx_span::attr::status, tx_span::val::knownBad); + span->setAttribute(tx_span::attr::txStatus, tx_span::val::knownBad); fee_.update(Resource::feeUselessData, "known bad"); JLOG(p_journal_.debug()) << "Ignoring known bad tx " << txID; }