nats-io/nats-server · error
error setting up pack response handling: %v
Error message
error setting up pack response handling: %v
What it means
Returned by DirAccResolver setup when the subscription that receives pack responses (packRespIb inbox) cannot be created. This handler merges JWT packs from other servers into the local DirJWTStore; failing to subscribe means cluster-wide JWT sync cannot complete, so setup aborts.
Source
Thrown at server/accounts.go:4634
// in case request is sent with headers.
_, msg = c.msgParts(msg)
handleDeleteRequest(dr.DirJWTStore, s, msg, reply)
}); err != nil {
return fmt.Errorf("error setting up delete request handling: %v", err)
}
// embed pack responses into store
if _, err := s.sysSubscribe(packRespIb, func(_ *subscription, _ *client, _ *Account, _, _ string, msg []byte) {
hash := dr.DirJWTStore.Hash()
if len(msg) == 0 { // end of response stream
s.Debugf("DirResolver - Merging finished and resulting in: %x", dr.DirJWTStore.Hash())
return
} else if err := dr.DirJWTStore.Merge(string(msg)); err != nil {
s.Errorf("DirResolver - Merging resulted in error: %v", err)
} else {
s.Debugf("DirResolver - Merging succeeded and changed %x to %x", hash, dr.DirJWTStore.Hash())
}
}); err != nil {
return fmt.Errorf("error setting up pack response handling: %v", err)
}
// periodically send out pack message
quit := s.quitCh
s.startGoRoutine(func() {
defer s.grWG.Done()
ticker := time.NewTicker(dr.syncInterval)
for {
select {
case <-quit:
ticker.Stop()
return
case <-ticker.C:
}
ourHash := dr.DirJWTStore.Hash()
s.Debugf("DirResolver - Checking store state: %x", ourHash)
s.sendInternalMsgLocked(accPackReqSubj, packRespIb, nil, ourHash[:])
}
})View on GitHub (pinned to 3a66a489d2)
Solutions
- Ensure system account/eventing is healthy on the node.
- Read the wrapped inner error for the underlying cause.
- Restart the server to re-initialize internal subscriptions.
- Check for version mismatches between cluster nodes that could affect internal subjects.
Defensive patterns
Strategy: validation
Validate before calling
if s.sys == nil || s.sys.replies == nil {
return fmt.Errorf("eventing unavailable; cannot start pack response handling")
} Try / catch
if err := dr.Start(); err != nil {
if strings.Contains(err.Error(), "error setting up pack response handling") {
return fmt.Errorf("cluster JWT sync disabled: %w", err)
}
return err
} Prevention
- Keep cluster nodes on compatible nats-server versions.
- Ensure the system account exists on every clustered node.
- Avoid shutting down eventing while resolver subscriptions are being set up.
- Surface the wrapped error in monitoring.
When it happens
Trigger: sysSubscribe on the pack response inbox fails during resolver startup — eventing down, system account misconfigured, or invalid inbox subject.
Common situations: Servers in a cluster where one node lacks the system account; race between resolver Start() and eventing teardown.
Related errors
- error setting up pack request handling: %v
- error setting up list request handling: %v
- error setting up delete request handling: %v
- will only fetch valid account keys
- store operation not supported for URL Resolver
AI-assisted analysis of nats-io/nats-server@3a66a489d2 (2026-09-02).
Data as JSON: /api/errors/36dadda21a69830a.
Report an issue: GitHub.