diff --git a/server/src/main/java/org/opensearch/index/engine/SegmentsStats.java b/server/src/main/java/org/opensearch/index/engine/SegmentsStats.java index f4fd2490c7abe..0ff64bb43ad5c 100644 --- a/server/src/main/java/org/opensearch/index/engine/SegmentsStats.java +++ b/server/src/main/java/org/opensearch/index/engine/SegmentsStats.java @@ -122,9 +122,12 @@ public SegmentsStats(StreamInput in) throws IOException { fileSizes = in.readMap(StreamInput::readString, StreamInput::readLong); if (in.getVersion().onOrAfter(Version.V_2_10_0)) { remoteSegmentStats = in.readOptionalWriteable(RemoteSegmentStats::new); - replicationStats = in.readOptionalWriteable(ReplicationStats::new); } else { remoteSegmentStats = new RemoteSegmentStats(); + } + if (in.getVersion().onOrAfter(Version.V_3_0_0)) { + replicationStats = in.readOptionalWriteable(ReplicationStats::new); + } else { replicationStats = new ReplicationStats(); } } @@ -326,6 +329,8 @@ public void writeTo(StreamOutput out) throws IOException { out.writeMap(this.fileSizes, StreamOutput::writeString, StreamOutput::writeLong); if (out.getVersion().onOrAfter(Version.V_2_10_0)) { out.writeOptionalWriteable(remoteSegmentStats); + } + if (out.getVersion().onOrAfter(Version.V_3_0_0)) { out.writeOptionalWriteable(replicationStats); } } diff --git a/server/src/main/java/org/opensearch/index/shard/IndexShard.java b/server/src/main/java/org/opensearch/index/shard/IndexShard.java index 7ddef8cb9f3d9..250061c53bda9 100644 --- a/server/src/main/java/org/opensearch/index/shard/IndexShard.java +++ b/server/src/main/java/org/opensearch/index/shard/IndexShard.java @@ -2944,7 +2944,7 @@ public Set getReplicationStatsForTrackedReplicas() } public ReplicationStats getReplicationStats() { - if (indexSettings.isSegRepEnabled()) { + if (indexSettings.isSegRepEnabled() && routingEntry().primary()) { final Set stats = getReplicationStatsForTrackedReplicas(); long maxBytesBehind = stats.stream().mapToLong(SegmentReplicationShardStats::getBytesBehindCount).max().orElse(0L); long totalBytesBehind = stats.stream().mapToLong(SegmentReplicationShardStats::getBytesBehindCount).sum(); @@ -2954,7 +2954,7 @@ public ReplicationStats getReplicationStats() { .orElse(0L); return new ReplicationStats(maxBytesBehind, totalBytesBehind, maxReplicationLag); } - return null; + return new ReplicationStats(); } /**