diff --git a/internal/reader/psync.go b/internal/reader/psync.go index 1be94c6..d2264ad 100644 --- a/internal/reader/psync.go +++ b/internal/reader/psync.go @@ -123,6 +123,7 @@ func (r *psyncReader) saveRDB() { r.receivedOffset = int64(masterOffset) log.Infof("source db is doing bgsave. address=[%s]", r.address) + statistics.Metrics.IsDoingBgsave = true timeStart := time.Now() // format: \n\n\n$\r\n for true { @@ -139,6 +140,7 @@ func (r *psyncReader) saveRDB() { } break } + statistics.Metrics.IsDoingBgsave = false log.Infof("source db bgsave finished. timeUsed=[%.2f]s, address=[%s]", time.Since(timeStart).Seconds(), r.address) lengthStr, err := r.rd.ReadString('\n') if err != nil { diff --git a/internal/statistics/statistics.go b/internal/statistics/statistics.go index 84d7da9..73e058a 100644 --- a/internal/statistics/statistics.go +++ b/internal/statistics/statistics.go @@ -18,6 +18,7 @@ type metrics struct { DisallowEntriesCount uint64 `json:"disallow_entries_count"` // rdb + IsDoingBgsave bool `json:"is_doing_bgsave"` RdbFileSize uint64 `json:"rdb_file_size"` RdbReceivedSize uint64 `json:"rdb_received_size"` RdbSendSize uint64 `json:"rdb_send_size"` diff --git a/scripts/cluster_helper/cluster_helper.py b/scripts/cluster_helper/cluster_helper.py index 3b1ec03..fab8048 100644 --- a/scripts/cluster_helper/cluster_helper.py +++ b/scripts/cluster_helper/cluster_helper.py @@ -88,7 +88,10 @@ def loop(): for metric in sorted(metrics, key=lambda x: x["address"]): address = metric['address'] if metric['rdb_file_size'] == 0: - print(f"{metric['address']} shaking...") + if metric['is_doing_bgsave']: + print(f"{address} is doing bgsave...") + else: + print(f"{metric['address']} handshaking...") elif metric['rdb_received_size'] < metric['rdb_file_size']: print(f"{metric['address']} receiving rdb. " f"percent=[{metric['rdb_received_size'] / metric['rdb_file_size'] * 100:.2f}]%, "