{"record":{"id":"9f81cd9c8efd8a2f","repo":"chenhg5/cc-connect","slug":"matrix-sync-ended-w","errorCode":null,"errorMessage":"matrix: sync ended: %w","messagePattern":"matrix: sync ended: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"platform/matrix/matrix.go","lineNumber":246,"sourceCode":"\t// re-dispatches as EventMessage, so we only need EventMessage here.\n\tsyncer := client.Syncer.(*mautrix.DefaultSyncer)\n\tsyncer.OnEventType(event.EventMessage, func(ctx context.Context, evt *event.Event) {\n\t\tp.handleMessage(ctx, evt)\n\t})\n\tsyncer.OnEventType(event.StateMember, func(ctx context.Context, evt *event.Event) {\n\t\tp.handleMemberState(ctx, evt)\n\t})\n\n\t// Blocks until ctx cancelled or fatal error\n\terr = client.SyncWithContext(ctx)\n\n\t// Cleanup\n\tp.closeCryptoHelper()\n\tp.clearClient(gen, client)\n\tif ctx.Err() != nil {\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"matrix: sync ended: %w\", err)\n}\n\nfunc (p *Platform) handleMessage(ctx context.Context, evt *event.Event) {\n\tcontent, ok := evt.Content.Parsed.(*event.MessageEventContent)\n\tif !ok || content == nil {\n\t\treturn\n\t}\n\n\t// Skip own messages\n\tselfID := p.getSelfUserID()\n\tif evt.Sender == selfID {\n\t\treturn\n\t}\n\n\t// Dedup\n\tif p.dedup.IsDuplicate(evt.ID.String()) {\n\t\treturn\n\t}","sourceCodeStart":228,"sourceCodeEnd":264,"githubUrl":"https://github.com/chenhg5/cc-connect/blob/4000b2338aa6e850c99df54f8b0ed6ed7460b401/platform/matrix/matrix.go#L228-L264","documentation":"runConnection: SyncWithContext returned without context cancellation (fatal sync error or dropped connection); after crypto cleanup the error is wrapped so connectLoop reconnects. Ordinary network blips surface here.","triggerScenarios":"Thrown at platform/matrix/matrix.go:246 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Usually self-heals via the connectLoop backoff","Persistent errors: check homeserver health and token validity"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"4000b2338aa6e850c99df54f8b0ed6ed7460b401","analyzedAt":"2026-09-06T11:45:09.575Z","contentChangedAt":"2026-09-06T11:45:09.575Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}