From b3b2feebc55f001785cdc7b6cd56570524b12450 Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Tue, 10 Dec 2019 22:00:20 +0100 Subject: [PATCH] Include config in info for msgset Signed-off-by: Derek Collison --- jetstream/jsm/jsm.go | 21 +++++++++++++++------ server/jetstream.go | 7 +++++-- server/msgset.go | 5 +++++ server/store.go | 13 +++++++++++++ test/jetstream_test.go | 11 ++++++----- 5 files changed, 44 insertions(+), 13 deletions(-) diff --git a/jetstream/jsm/jsm.go b/jetstream/jsm/jsm.go index 5130a017..57a46a44 100644 --- a/jetstream/jsm/jsm.go +++ b/jetstream/jsm/jsm.go @@ -390,15 +390,24 @@ func getMsgSetInfo(nc *nats.Conn, name string) { if strings.HasPrefix(string(resp.Data), api.ErrPrefix) { log.Fatalf("%q", resp.Data) } - var mstats api.MsgSetStats - if err = json.Unmarshal(resp.Data, &mstats); err != nil { + var msi api.MsgSetInfo + if err = json.Unmarshal(resp.Data, &msi); err != nil { log.Fatalf("Unexpected error: %v", err) } + mstats := &msi.Stats + cfg := &msi.Config log.Println() - log.Printf("Messages: %s", humanize.Comma(int64(mstats.Msgs))) - log.Printf("Bytes: %s", humanize.Bytes(mstats.Bytes)) - log.Printf("FirstSeq: %s", humanize.Comma(int64(mstats.FirstSeq))) - log.Printf("LastSeq: %s", humanize.Comma(int64(mstats.LastSeq))) + log.Printf("Subjects: %+v", cfg.Subjects) + log.Printf("Retention: %s", cfg.Retention) + log.Printf("TTL: %v", cfg.MaxAge) + log.Printf("Messages: %s of %s", + humanize.Comma(int64(mstats.Msgs)), + unlimitedOrFriendly(int(cfg.MaxMsgs))) + log.Printf("Bytes: %s of %s", + humanize.Bytes(mstats.Bytes), + unlimitedOrFriendly(int(cfg.MaxBytes))) + log.Printf("FirstSeq: %s", humanize.Comma(int64(mstats.FirstSeq))) + log.Printf("LastSeq: %s", humanize.Comma(int64(mstats.LastSeq))) log.Println() } diff --git a/server/jetstream.go b/server/jetstream.go index f61a958f..0c579695 100644 --- a/server/jetstream.go +++ b/server/jetstream.go @@ -897,8 +897,11 @@ func (s *Server) jsMsgSetInfoRequest(sub *subscription, c *client, subject, repl s.sendInternalAccountMsg(c.acc, reply, fmt.Sprintf("%s %v", ErrPrefix, err)) return } - stats := mset.Stats() - b, err := json.MarshalIndent(stats, "", " ") + msi := MsgSetInfo{ + Stats: mset.Stats(), + Config: mset.Config(), + } + b, err := json.MarshalIndent(msi, "", " ") if err != nil { return } diff --git a/server/msgset.go b/server/msgset.go index 140ba6e7..83bad4af 100644 --- a/server/msgset.go +++ b/server/msgset.go @@ -36,6 +36,11 @@ type MsgSetConfig struct { NoAck bool `json:"no_ack,omitempty"` } +type MsgSetInfo struct { + Config MsgSetConfig `json:"name"` + Stats MsgSetStats `json:"stats"` +} + // RetentionPolicy determines how messages in a set are retained. type RetentionPolicy int diff --git a/server/store.go b/server/store.go index 7cfef094..bff722ca 100644 --- a/server/store.go +++ b/server/store.go @@ -95,6 +95,19 @@ const ( workQueuePolicyString = "work_queue" ) +func (rp RetentionPolicy) String() string { + switch rp { + case StreamPolicy: + return "Limits" + case InterestPolicy: + return "Interest" + case WorkQueuePolicy: + return "WorkQueue" + default: + return "Unknown Retention Policy" + } +} + func (rp RetentionPolicy) MarshalJSON() ([]byte, error) { switch rp { case StreamPolicy: diff --git a/test/jetstream_test.go b/test/jetstream_test.go index c5f94729..e855c190 100644 --- a/test/jetstream_test.go +++ b/test/jetstream_test.go @@ -16,6 +16,7 @@ package test import ( "encoding/json" "fmt" + "log" "math/rand" "os" "path/filepath" @@ -2836,12 +2837,12 @@ func TestJetStreamRequestAPI(t *testing.T) { if err != nil { t.Fatalf("Unexpected error: %v", err) } - var mstats server.MsgSetStats - if err = json.Unmarshal(resp.Data, &mstats); err != nil { - t.Fatalf("Unexpected error: %v", err) + var msi server.MsgSetInfo + if err = json.Unmarshal(resp.Data, &msi); err != nil { + log.Fatalf("Unexpected error: %v", err) } - if mstats.Msgs != uint64(toSend) { - t.Fatalf("Expected to get %d msgs, got %d", toSend, mstats.Msgs) + if msi.Stats.Msgs != uint64(toSend) { + t.Fatalf("Expected to get %d msgs, got %d", toSend, msi.Stats.Msgs) } // Looking up on that is not there should yield an error.