{"record":{"id":"36dadda21a69830a","repo":"nats-io/nats-server","slug":"error-setting-up-pack-response-handling-v","errorCode":null,"errorMessage":"error setting up pack response handling: %v","messagePattern":"error setting up pack response handling: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/accounts.go","lineNumber":4634,"sourceCode":"\t\t// in case request is sent with headers.\n\t\t_, msg = c.msgParts(msg)\n\t\thandleDeleteRequest(dr.DirJWTStore, s, msg, reply)\n\t}); err != nil {\n\t\treturn fmt.Errorf(\"error setting up delete request handling: %v\", err)\n\t}\n\t// embed pack responses into store\n\tif _, err := s.sysSubscribe(packRespIb, func(_ *subscription, _ *client, _ *Account, _, _ string, msg []byte) {\n\t\thash := dr.DirJWTStore.Hash()\n\t\tif len(msg) == 0 { // end of response stream\n\t\t\ts.Debugf(\"DirResolver - Merging finished and resulting in: %x\", dr.DirJWTStore.Hash())\n\t\t\treturn\n\t\t} else if err := dr.DirJWTStore.Merge(string(msg)); err != nil {\n\t\t\ts.Errorf(\"DirResolver - Merging resulted in error: %v\", err)\n\t\t} else {\n\t\t\ts.Debugf(\"DirResolver - Merging succeeded and changed %x to %x\", hash, dr.DirJWTStore.Hash())\n\t\t}\n\t}); err != nil {\n\t\treturn fmt.Errorf(\"error setting up pack response handling: %v\", err)\n\t}\n\t// periodically send out pack message\n\tquit := s.quitCh\n\ts.startGoRoutine(func() {\n\t\tdefer s.grWG.Done()\n\t\tticker := time.NewTicker(dr.syncInterval)\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-quit:\n\t\t\t\tticker.Stop()\n\t\t\t\treturn\n\t\t\tcase <-ticker.C:\n\t\t\t}\n\t\t\tourHash := dr.DirJWTStore.Hash()\n\t\t\ts.Debugf(\"DirResolver - Checking store state: %x\", ourHash)\n\t\t\ts.sendInternalMsgLocked(accPackReqSubj, packRespIb, nil, ourHash[:])\n\t\t}\n\t})","sourceCodeStart":4616,"sourceCodeEnd":4652,"githubUrl":"https://github.com/nats-io/nats-server/blob/3a66a489d262bf89b71a71c955c94920394532f3/server/accounts.go#L4616-L4652","documentation":"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.","triggerScenarios":"sysSubscribe on the pack response inbox fails during resolver startup — eventing down, system account misconfigured, or invalid inbox subject.","commonSituations":"Servers in a cluster where one node lacks the system account; race between resolver Start() and eventing teardown.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if s.sys == nil || s.sys.replies == nil {\n    return fmt.Errorf(\"eventing unavailable; cannot start pack response handling\")\n}","typeGuard":null,"tryCatchPattern":"if err := dr.Start(); err != nil {\n    if strings.Contains(err.Error(), \"error setting up pack response handling\") {\n        return fmt.Errorf(\"cluster JWT sync disabled: %w\", err)\n    }\n    return err\n}","preventionTips":["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."],"tags":["nats-server","account-resolver","subscription","cluster-sync"],"backgroundTag":"internal-subscription-setup-failed","analyzedSha":"3a66a489d262bf89b71a71c955c94920394532f3","analyzedAt":"2026-09-02T04:41:54.247Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}