Skip to content

Commit

Permalink
Only enable JetStream account updates in clustered mode.
Browse files Browse the repository at this point in the history
Signed-off-by: Derek Collison <derek@nats.io>
  • Loading branch information
derekcollison committed Jun 10, 2023
1 parent 8c513ad commit a5de25f
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions server/jetstream.go
Original file line number Diff line number Diff line change
Expand Up @@ -1020,9 +1020,9 @@ func (a *Account) EnableJetStream(limits map[string]JetStreamAccountLimits) erro
return fmt.Errorf("jetstream can not be enabled on the system account")
}

s.mu.Lock()
s.mu.RLock()
sendq := s.sys.sendq
s.mu.Unlock()
s.mu.RUnlock()

// No limits means we dynamically set up limits.
// We also place limits here so we know that the account is configured for JetStream.
Expand Down Expand Up @@ -1054,12 +1054,15 @@ func (a *Account) EnableJetStream(limits map[string]JetStreamAccountLimits) erro
jsa := &jsAccount{js: js, account: a, limits: limits, streams: make(map[string]*stream), sendq: sendq, usage: make(map[string]*jsaStorage)}
jsa.storeDir = filepath.Join(js.config.StoreDir, a.Name)

jsa.usageMu.Lock()
jsa.utimer = time.AfterFunc(usageTick, jsa.sendClusterUsageUpdateTimer)
// Cluster mode updates to resource usage, but we always will turn on. System internal prevents echos.
jsa.updatesPub = fmt.Sprintf(jsaUpdatesPubT, a.Name, sysNode)
jsa.updatesSub, _ = s.sysSubscribe(fmt.Sprintf(jsaUpdatesSubT, a.Name), jsa.remoteUpdateUsage)
jsa.usageMu.Unlock()
// A single server does not need to do the account updates at this point.
if js.cluster != nil || !s.standAloneMode() {
jsa.usageMu.Lock()
jsa.utimer = time.AfterFunc(usageTick, jsa.sendClusterUsageUpdateTimer)
// Cluster mode updates to resource usage. System internal prevents echos.
jsa.updatesPub = fmt.Sprintf(jsaUpdatesPubT, a.Name, sysNode)
jsa.updatesSub, _ = s.sysSubscribe(fmt.Sprintf(jsaUpdatesSubT, a.Name), jsa.remoteUpdateUsage)
jsa.usageMu.Unlock()
}

js.accounts[a.Name] = jsa
js.mu.Unlock()
Expand Down

0 comments on commit a5de25f

Please sign in to comment.