[
https://issues.apache.org/jira/browse/IGNITE-29222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ignite TC Bot updated IGNITE-29222:
-----------------------------------
External issue ID: IGN-2437
> Add ClientsAddedToTopology monitoring metric to track client node topology
> join events
> --------------------------------------------------------------------------------------
>
> Key: IGNITE-29222
> URL: https://issues.apache.org/jira/browse/IGNITE-29222
> Project: Ignite
> Issue Type: New Feature
> Affects Versions: 2.19
> Reporter: Egor Baranov
> Assignee: Egor Baranov
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> *Summary:* Add ClientsAddedToTopology monitoring metric to track client node
> topology join events
> h2.Problem Statement
> Currently, Apache Ignite does not provide a built-in monitoring metric that
> tracks the cumulative number of client nodes added to the cluster topology.
> Operators who need to monitor client connection activity (e.g., for capacity
> planning, detecting unexpected churn, or correlating application-level issues
> with topology changes) must rely on log parsing of the
> {code}GridDiscoveryManager{code} output, which is unreliable at scale and not
> amenable to automated alerting.
> h2.Proposed Solution
> Introduce a new thread-safe counter metric,
> {code}ClientsAddedToTopology{code}, registered in the existing discovery
> metrics registry ({code}io.discovery{code}). The metric is incremented on
> each of the following topology events:
> # A new client node joins the topology ({code}EVT_NODE_JOINED{code} where the
> joining node is a client).
> # A disconnected client node reconnects to the topology
> ({code}EVT_CLIENT_NODE_RECONNECTED{code}).
> The counter is implemented using {code}LongAdderMetric{code} (backed by
> {code}java.util.concurrent.atomic.LongAdder{code}), ensuring lock-free,
> thread-independent increments even under high-frequency client
> connection/disconnection workloads.
> h2.Metric Details
> {table}
> |*Property*|*Value*
> |Registry|{code}io.discovery{code}
> |Metric Name|{code}ClientsAddedToTopology{code}
> |Type|Long (counter, monotonically increasing)
> |Description|Count of client nodes added to topology
> |JMX Access|Via {code}JmxMetricExporterSpi{code} (default)
> {table}
> h2.Acceptance Criteria
> # The metric is exposed via the standard Ignite metrics API
> ({code}Ignite.context().metric().registry("io.discovery"){code}).
> # The metric is accessible via JMX (MBean) without additional configuration.
> # The counter is thread-safe and does not introduce measurable contention
> under concurrent client join/reconnect events.
> # Unit tests verify:
> ## The metric starts at 0 on a fresh node.
> ## The metric increments by 1 per client node join.
> ## The metric name and description are correctly registered.
> # The test class is registered in the {code}IgniteKernalSelfTestSuite{code}.
> # The implementation follows the existing project style and conventions for
> metric registration.
> h2.Affected Components
> # {code}GridDiscoveryManager{code} (core) — metric initialization and
> increment logic
> # {code}IgniteKernalSelfTestSuite{code} (test) — new test class registration
> # {code}GridDiscoveryManagerClientMetricTest{code} (test) — new test class
> h2.Performance Impact
> None. The counter uses {code}LongAdder{code} which provides O(1) amortized
> increments with no global lock. The metric is created during node startup and
> adds one additional entry to the existing {code}io.discovery{code} metric
> registry.
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)