mirror of https://github.com/apache/kafka.git
KAFKA-14883: Expose `observer` state in KRaft metrics (#13525)
Currently, the current-state KRaft related metric reports follower state for a broker while technically it should be reported as an observer as the kafka-metadata-quorum tool does. Reviewers: Luke Chen <showuon@gmail.com>, dengziming <dengziming1993@gmail.com>
This commit is contained in:
parent
1d5d003ff4
commit
571841fed3
|
@ -1834,7 +1834,7 @@ These metrics are reported on both Controllers and Brokers in a KRaft Cluster
|
|||
</tr>
|
||||
<tr>
|
||||
<td>Current State</td>
|
||||
<td>The current state of this member; possible values are leader, candidate, voted, follower, unattached.</td>
|
||||
<td>The current state of this member; possible values are leader, candidate, voted, follower, unattached, observer.</td>
|
||||
<td>kafka.server:type=raft-metrics,name=current-state</td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
|
|
@ -63,7 +63,7 @@ public class KafkaRaftMetrics implements AutoCloseable {
|
|||
this.numUnknownVoterConnections = 0;
|
||||
this.logEndOffset = new OffsetAndEpoch(0L, 0);
|
||||
|
||||
this.currentStateMetricName = metrics.metricName("current-state", metricGroupName, "The current state of this member; possible values are leader, candidate, voted, follower, unattached");
|
||||
this.currentStateMetricName = metrics.metricName("current-state", metricGroupName, "The current state of this member; possible values are leader, candidate, voted, follower, unattached, observer");
|
||||
Gauge<String> stateProvider = (mConfig, currentTimeMs) -> {
|
||||
if (state.isLeader()) {
|
||||
return "leader";
|
||||
|
@ -72,7 +72,12 @@ public class KafkaRaftMetrics implements AutoCloseable {
|
|||
} else if (state.isVoted()) {
|
||||
return "voted";
|
||||
} else if (state.isFollower()) {
|
||||
return "follower";
|
||||
// a broker is special kind of follower, as not being a voter, it's an observer
|
||||
if (state.isObserver()) {
|
||||
return "observer";
|
||||
} else {
|
||||
return "follower";
|
||||
}
|
||||
} else {
|
||||
return "unattached";
|
||||
}
|
||||
|
|
|
@ -144,7 +144,7 @@ public class KafkaRaftMetricsTest {
|
|||
assertEquals((double) -1L, getMetric(metrics, "high-watermark").metricValue());
|
||||
|
||||
state.transitionToFollower(2, 1);
|
||||
assertEquals("follower", getMetric(metrics, "current-state").metricValue());
|
||||
assertEquals("observer", getMetric(metrics, "current-state").metricValue());
|
||||
assertEquals((double) 1, getMetric(metrics, "current-leader").metricValue());
|
||||
assertEquals((double) -1, getMetric(metrics, "current-vote").metricValue());
|
||||
assertEquals((double) 2, getMetric(metrics, "current-epoch").metricValue());
|
||||
|
|
Loading…
Reference in New Issue