nats-io/nats-server · error
error setting up delete request handling: %v
Error message
error setting up delete request handling: %v
What it means
Returned by DirAccResolver setup when the subscription handling account-delete requests (accDeleteReqSubj) cannot be created. The handler decodes the raw claim and removes the account from the directory store; without it delete propagation in the cluster breaks, so setup fails fast.
Source
Thrown at server/accounts.go:4620
s.Debugf("DirResolver - Pack request hash %x - finished responding with hash %x", theirHash, ourHash)
s.sendInternalMsgLocked(reply, _EMPTY_, nil, []byte{})
}
}); err != nil {
return fmt.Errorf("error setting up pack request handling: %v", err)
}
// respond to list requests with one message containing all account ids
if _, err := s.sysSubscribe(accListReqSubj, func(_ *subscription, _ *client, _ *Account, _, reply string, _ []byte) {
handleListRequest(dr.DirJWTStore, s, reply)
}); err != nil {
return fmt.Errorf("error setting up list request handling: %v", err)
}
if _, err := s.sysSubscribe(accDeleteReqSubj, func(_ *subscription, c *client, _ *Account, _, reply string, msg []byte) {
// As this is a raw message, we need to extract payload and only decode claims from it,
// 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() {View on GitHub (pinned to 3a66a489d2)
Solutions
- Configure the system account correctly so internal subscriptions work.
- Check the wrapped error for the precise subscription failure reason.
- Avoid starting/stopping the server and resolver concurrently.
- Validate that the resolver's directory is writable and options are sane before Start().
Defensive patterns
Strategy: validation
Validate before calling
if !systemAccountConfigured(srv) {
return fmt.Errorf("delete request handling requires eventing/system account")
} Try / catch
if err := dr.Start(); err != nil {
if strings.Contains(err.Error(), "error setting up delete request handling") {
log.Errorf("resolver delete subscription failed: %v", err)
}
} Prevention
- Configure the system account before enabling resolver features.
- Don't interleave server Stop() with resolver Start().
- Check the inner error for the true cause.
- Run startup integration tests covering resolver setup.
When it happens
Trigger: sysSubscribe(accDeleteReqSubj, ...) returning an error during resolver startup — eventing/system client not ready or invalid system setup.
Common situations: Starting a server with a dir resolver before the system account exists; shutting down the server concurrently with resolver setup.
Related errors
- error setting up pack request handling: %v
- error setting up list request handling: %v
- error setting up pack response 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/91bea7f14e80dadd.
Report an issue: GitHub.