Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
public class DescribeQuorumResult {

  private final KafkaFuture<QuorumInfo> quorumInfo;

  public DescribeQuorumResult(KafkaFuture<QuorumInfo> quorumInfo) {
    this.quorumInfo = quorumInfo;
  }

  /**
   * Returns a future QuorumInfo
   */
  public KafkaFuture<QuorumInfo> quorumInfo() {
    return quorumInfo;
  }
}

...

Code Block
public class QuorumInfo {
  private final String topic;

  private final Integer leaderId;
  private final List<ReplicaState> voters;
  private final List<ReplicaState> observers;

  public QuorumInfo(String topic, Integer leaderId, List<ReplicaState> voters, List<ReplicaState> observers) {
    this.topic = topic;
    this.leaderId = leaderId;
    this.voters = voters;
    this.observers = observers;
  }

  public String getTopictopic() {
    return topic;
  }

  public Integer getLeaderIdleaderId() {
    return leaderId;
  }

  public List<ReplicaState> getVotersvoters() {
    return voters;
  }

  public List<ReplicaState> getObserversobservers() {
    return observers;
  }

  public static class ReplicaState ReplicaState {
    private final int replicaId;
    private final long logEndOffset;
    private final long lastFetchTimeMs;
    private final long lastCaughtUpTimeMs;

    public ReplicaState(int replicaId, long logEndOffset) {
      this.replicaId = replicaId;
      this.logEndOffset = logEndOffset;
      this.lastFetchTimeMs = -1;
      this.lastCaughtUpTimeMs = -1;
    }

    public ReplicaState(int replicaId, long logEndOffset,
        long lastFetchTimeMs, long lastCaughtUpTimeMs) {
      this.replicaId = replicaId;
      this.logEndOffset = logEndOffset;
      this.lastFetchTimeMs = lastFetchTimeMs;
      this.lastCaughtUpTimeMs = lastCaughtUpTimeMs;
    }

    public int replicaId() {
    private final intreturn replicaId;
    private final long logEndOffset;}

    public ReplicaState(int replicaId, long logEndOffset() {
      this.replicaId = replicaId;
      this.logEndOffset = return logEndOffset;
    }

    public intlong getReplicaIdlastFetchTimeMs() {
      return replicaIdlastFetchTimeMs;
    }

    public long getLogEndOffsetlastCaughtUpTimeMs() {
      return logEndOffsetlastCaughtUpTimeMs;
    }
  }
}


Code Block
public class DescribeQuorumOptions extends AbstractOptions<DescribeQuorumOptions> {
}

...

Proposed change in the DescribeQuorum Response:

Code Block

  "apiKey": 55,
  "type": "response",
  "name": "DescribeQuorumResponse",
  "validVersions": "0-1",
  "flexibleVersions": "0+",
  "fields": [
    { "name": "ErrorCode", "type": "int16", "versions": "0+",
      "about": "The top level error code."},
    { "name": "Topics", "type": "[]TopicData",
      "versions": "0+", "fields": [
      { "name": "TopicName", "type": "string", "versions": "0+", "entityType": "topicName",
        "about": "The topic name." },
      { "name": "Partitions", "type": "[]PartitionData",
        "versions": "0+", "fields": [
        { "name": "PartitionIndex", "type": "int32", "versions": "0+",
          "about": "The partition index." },
        { "name": "ErrorCode", "type": "int16", "versions": "0+"},
        { "name": "LeaderId", "type": "int32", "versions": "0+", "entityType": "brokerId",
          "about": "The ID of the current leader or -1 if the leader is unknown."},
        { "name": "LeaderEpoch", "type": "int32", "versions": "0+",
          "about": "The latest known leader epoch"},
        { "name": "HighWatermark", "type": "int64", "versions": "0+"},
        { "name": "CurrentVoters", "type": "[]ReplicaState", "versions": "0+" },
        { "name": "Observers", "type": "[]ReplicaState", "versions": "0+" }
      ]}
    ]}],
  "commonStructs": [
      { "name": "ReplicaState", "versions": "0+", "fields": [
      { "name": "ReplicaId", "type": "int32", "versions": "0+", "entityType": "brokerId" },
      { "name": "LogEndOffset", "type": "int64", "versions": "0+",
        "about": "The last known log end offset of the follower or -1 if it is unknown"},
      { "name": "LastFetchTimestamp", "type": "int64", "versions": "1+",
        "about": "The last known leader wall clock time time when a follower fetched from the leader. This is reported as -1 both for the current leader or if it is unknown for a voter"},
      { "name": "LastCaughtUpTimestamp", "type": "int64", "versions": "1+",
        "about": "The leader wall clock append time of the offset for which the follower made the most recent fetch request. This is reported as the current time for the leader and -1 if unknown for a voter"}
    ]}
  ]

...