From 46be7408f6630569929044fcad459ba0844a296d Mon Sep 17 00:00:00 2001 From: Piotr Piotrowski Date: Fri, 5 Apr 2024 10:28:30 +0200 Subject: [PATCH] [IMPROVED] Documentation for AccountInfo and ErrJetStreamNotEnabled (#1605) Signed-off-by: Piotr Piotrowski --- jetstream/errors.go | 4 ++++ jetstream/jetstream.go | 8 +++++--- jserrors.go | 4 ++++ jsm.go | 10 +++++++--- 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/jetstream/errors.go b/jetstream/errors.go index 5ed5176a1..fb364341c 100644 --- a/jetstream/errors.go +++ b/jetstream/errors.go @@ -71,6 +71,10 @@ var ( // ErrJetStreamNotEnabled is an error returned when JetStream is not // enabled. + // + // Note: This error will not be returned in clustered mode, even if each + // server in the cluster does not have JetStream enabled. In clustered mode, + // requests will time out instead. ErrJetStreamNotEnabled JetStreamError = &jsError{apiErr: &APIError{ErrorCode: JSErrCodeJetStreamNotEnabled, Description: "jetstream not enabled", Code: 503}} // ErrJetStreamNotEnabledForAccount is an error returned when JetStream is diff --git a/jetstream/jetstream.go b/jetstream/jetstream.go index 19fb2d89e..86200de5f 100644 --- a/jetstream/jetstream.go +++ b/jetstream/jetstream.go @@ -791,9 +791,11 @@ func validateSubject(subject string) error { // AccountInfo fetches account information from the server, containing details // about the account associated with this JetStream connection. If account is -// not enabled for JetStream, ErrJetStreamNotEnabledForAccount is returned. If -// the server does not have JetStream enabled, ErrJetStreamNotEnabled is -// returned. +// not enabled for JetStream, ErrJetStreamNotEnabledForAccount is returned. +// +// If the server does not have JetStream enabled, ErrJetStreamNotEnabled is +// returned (for a single server setup). For clustered topologies, AccountInfo +// will time out. func (js *jetStream) AccountInfo(ctx context.Context) (*AccountInfo, error) { ctx, cancel := wrapContextWithoutDeadline(ctx) if cancel != nil { diff --git a/jserrors.go b/jserrors.go index 2a160405c..b9a62bd53 100644 --- a/jserrors.go +++ b/jserrors.go @@ -22,6 +22,10 @@ var ( // API errors // ErrJetStreamNotEnabled is an error returned when JetStream is not enabled for an account. + // + // Note: This error will not be returned in clustered mode, even if each + // server in the cluster does not have JetStream enabled. In clustered mode, + // requests will time out instead. ErrJetStreamNotEnabled JetStreamError = &jsError{apiErr: &APIError{ErrorCode: JSErrCodeJetStreamNotEnabled, Description: "jetstream not enabled", Code: 503}} // ErrJetStreamNotEnabledForAccount is an error returned when JetStream is not enabled for an account. diff --git a/jsm.go b/jsm.go index 94fa86c32..78ead5b1a 100644 --- a/jsm.go +++ b/jsm.go @@ -288,9 +288,13 @@ type accountInfoResponse struct { AccountInfo } -// AccountInfo retrieves info about the JetStream usage from the current account. -// If JetStream is not enabled, this will return ErrJetStreamNotEnabled -// Other errors can happen but are generally considered retryable +// AccountInfo fetches account information from the server, containing details +// about the account associated with this JetStream connection. If account is +// not enabled for JetStream, ErrJetStreamNotEnabledForAccount is returned. +// +// If the server does not have JetStream enabled, ErrJetStreamNotEnabled is +// returned (for a single server setup). For clustered topologies, AccountInfo +// will time out. func (js *js) AccountInfo(opts ...JSOpt) (*AccountInfo, error) { o, cancel, err := getJSContextOpts(js.opts, opts...) if err != nil {