{"record":{"id":"c8803ba59e7f3fc5","repo":"tailscale/tailscale","slug":"reading-aum-v-w","errorCode":null,"errorMessage":"reading AUM (%v): %w","messagePattern":"reading AUM \\((.+?)\\): %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"ipn/ipnlocal/tailnet-lock.go","lineNumber":1028,"sourceCode":"\n// TailnetLockLog returns the changelog of TKA state up to maxEntries in size.\nfunc (b *LocalBackend) TailnetLockLog(maxEntries int) ([]ipnstate.TailnetLockUpdate, error) {\n\tb.mu.Lock()\n\tdefer b.mu.Unlock()\n\n\tif b.tka == nil {\n\t\treturn nil, errTailnetLockNotActive\n\t}\n\n\tvar out []ipnstate.TailnetLockUpdate\n\tcursor := b.tka.authority.Head()\n\tfor range maxEntries {\n\t\taum, err := b.tka.storage.AUM(cursor)\n\t\tif err != nil {\n\t\t\tif err == os.ErrNotExist {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\treturn out, fmt.Errorf(\"reading AUM (%v): %w\", cursor, err)\n\t\t}\n\n\t\tupdate := ipnstate.TailnetLockUpdate{\n\t\t\tHash:   cursor,\n\t\t\tChange: aum.MessageKind.String(),\n\t\t\tRaw:    aum.Serialize(),\n\t\t}\n\t\tout = append(out, update)\n\n\t\tparent, hasParent := aum.Parent()\n\t\tif !hasParent {\n\t\t\tbreak\n\t\t}\n\t\tcursor = parent\n\t}\n\n\treturn out, nil\n}","sourceCodeStart":1010,"sourceCodeEnd":1046,"githubUrl":"https://github.com/tailscale/tailscale/blob/6e0912f97994f927632b34ae9e63b53d6516a6ac/ipn/ipnlocal/tailnet-lock.go#L1010-L1046","documentation":"Walking the AUM chain backwards from head, reading the AUM at the given hash from TKA storage failed with something other than not-exist (which ends the walk normally). The store is corrupt or unreadable.","triggerScenarios":"Thrown at ipn/ipnlocal/tailnet-lock.go:1028 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["The AUM (authority update message) could not be read/decoded; the tailnet lock log may be corrupted — re-fetch the lock state from the control server or reset local lock state."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6e0912f97994f927632b34ae9e63b53d6516a6ac","analyzedAt":"2026-08-18T08:17:25.280Z","contentChangedAt":"2026-08-18T08:17:25.280Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}