diff --git a/cmd/bucket-handlers.go b/cmd/bucket-handlers.go index 38ad749f6..a070d3a40 100644 --- a/cmd/bucket-handlers.go +++ b/cmd/bucket-handlers.go @@ -1636,7 +1636,7 @@ func (api objectAPIHandlers) GetBucketReplicationMetricsHandler(w http.ResponseW bucketStats := globalNotificationSys.GetClusterBucketStats(r.Context(), bucket) bucketReplStats := BucketReplicationStats{} - + // sum up metrics from each node in the cluster for _, bucketStat := range bucketStats { bucketReplStats.FailedCount += bucketStat.ReplicationStats.FailedCount bucketReplStats.FailedSize += bucketStat.ReplicationStats.FailedSize @@ -1645,6 +1645,14 @@ func (api objectAPIHandlers) GetBucketReplicationMetricsHandler(w http.ResponseW bucketReplStats.ReplicaSize += bucketStat.ReplicationStats.ReplicaSize bucketReplStats.ReplicatedSize += bucketStat.ReplicationStats.ReplicatedSize } + // add initial usage from the time of cluster up + usageStat := globalReplicationStats.GetInitialUsage(bucket) + bucketReplStats.FailedCount += usageStat.FailedCount + bucketReplStats.FailedSize += usageStat.FailedSize + bucketReplStats.PendingCount += usageStat.PendingCount + bucketReplStats.PendingSize += usageStat.PendingSize + bucketReplStats.ReplicaSize += usageStat.ReplicaSize + bucketReplStats.ReplicatedSize += usageStat.ReplicatedSize if err := json.NewEncoder(w).Encode(&bucketReplStats); err != nil { writeErrorResponse(ctx, w, toAPIError(ctx, err), r.URL, guessIsBrowserReq(r)) diff --git a/cmd/bucket-replication-stats.go b/cmd/bucket-replication-stats.go index 255b429c9..32dc3a977 100644 --- a/cmd/bucket-replication-stats.go +++ b/cmd/bucket-replication-stats.go @@ -110,7 +110,7 @@ func (r *ReplicationStats) Update(bucket string, n int64, status, prevStatus rep r.Unlock() } -// GetInitialUsage gets initial usage from the time of cluster initialization +// GetInitialUsage get replication metrics available at the time of cluster initialization func (r *ReplicationStats) GetInitialUsage(bucket string) BucketReplicationStats { if r == nil { return BucketReplicationStats{} @@ -133,7 +133,7 @@ func (r *ReplicationStats) GetInitialUsage(bucket string) BucketReplicationStats } } -// Get total bytes pending replication for a bucket +// Get replication metrics for a bucket from this node since this node came up. func (r *ReplicationStats) Get(bucket string) BucketReplicationStats { if r == nil { return BucketReplicationStats{}