mautrix / discord

A Matrix-Discord puppeting bridge
https://go.mau.fi/mautrix-discord
GNU Affero General Public License v3.0
253 stars 21 forks source link

Bridge crashes due to `duplicate key value violates unique constraint "discord_file_mxc_key"` error #84

Closed tux93 closed 1 year ago

tux93 commented 1 year ago

I've been using the bridge in bot relay mode for a few months now.

Since last night the bridge crashes over and over with this error:

May 05 02:54:58 mautrix-discord[2056]: 2023-05-05T02:54:58+02:00 WRN Failed to insert copied file mxc://[REDACTED]/8677a578bdd1788c2e7f51a077e08ac3718a209d: pq: duplicate key value violates unique constraint "discord_file_mxc_key" module=Database/File
May 05 02:54:58 mautrix-discord[2056]: panic: pq: duplicate key value violates unique constraint "discord_file_mxc_key"
May 05 02:54:58 mautrix-discord[2056]: goroutine 141 [running]:
May 05 02:54:58 mautrix-discord[2056]: go.mau.fi/mautrix-discord/database.(*File).Insert(0xc0001ba540, {0x0?, 0x0?})
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/database/file.go:129 +0x645
May 05 02:54:58 mautrix-discord[2056]: main.(*DiscordBridge).copyAttachmentToMatrix.func1()
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/attachments.go:281 +0x23b
May 05 02:54:58 mautrix-discord[2056]: maunium.net/go/mautrix/util.(*ReturnableOnce[...]).Do.func1()
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/vendor/maunium.net/go/mautrix/util/returnonce.go:20 +0x28
May 05 02:54:58 mautrix-discord[2056]: sync.(*Once).doSlow(0x0?, 0xc00053cf60?)
May 05 02:54:58 mautrix-discord[2056]:         /usr/lib64/go/1.20/src/sync/once.go:74 +0xc2
May 05 02:54:58 mautrix-discord[2056]: sync.(*Once).Do(...)
May 05 02:54:58 mautrix-discord[2056]:         /usr/lib64/go/1.20/src/sync/once.go:65
May 05 02:54:58 mautrix-discord[2056]: maunium.net/go/mautrix/util.(*ReturnableOnce[...]).Do(0x556875accb80?, 0xc000501080?)
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/vendor/maunium.net/go/mautrix/util/returnonce.go:19 +0x53
May 05 02:54:58 mautrix-discord[2056]: main.(*DiscordBridge).copyAttachmentToMatrix(0xc000220900, 0xc0004a62c0, {0xc000501080, 0x72}, 0x0, {{0xc000040df8, 0x13}, {0xc0004c8d10, 0x9}, {0x0, ...}, ...})
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/attachments.go:254 +0x177
May 05 02:54:58 mautrix-discord[2056]: main.(*Portal).convertDiscordFile(0xc000138a00, {0x55687576e607, 0xa}, 0x1?, {0xc000040df8, 0x13}, {0xc000501080?, 0x7ff1c248f108?}, 0xc0007341e0)
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal_convert.go:56 +0x265
May 05 02:54:58 mautrix-discord[2056]: main.(*Portal).convertDiscordAttachment(0x5568759df6a0?, 0xc0005a1bf8?, 0xc00062cc60)
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal_convert.go:161 +0x456
May 05 02:54:58 mautrix-discord[2056]: main.(*Portal).convertDiscordMessage(0xc000040db0?, 0xc0001bc2a0?, 0xc0006a9520)
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal_convert.go:237 +0x294
May 05 02:54:58 mautrix-discord[2056]: main.(*Portal).handleDiscordMessageCreate(0xc000138a00, 0xc0005a1f64?, 0xc0006a9520, 0x0)
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal.go:618 +0x4bb
May 05 02:54:58 mautrix-discord[2056]: main.(*Portal).handleDiscordMessages(0xc000138a00, {{0x556875a2c1e0?, 0xc000694608?}, 0xc0001bc2a0?, 0x0?})
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal.go:550 +0x370
May 05 02:54:58 mautrix-discord[2056]: main.(*Portal).messageLoop(0xc000138a00)
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal.go:266 +0xce
May 05 02:54:58 mautrix-discord[2056]: created by main.(*DiscordBridge).NewPortal
May 05 02:54:58 mautrix-discord[2056]:         /home/abuild/rpmbuild/BUILD/mautrix-discord-0.3.0+git.0.42c48bf/portal.go:255 +0x5de
May 05 02:54:58 systemd[1]: mautrix-discord.service: Main process exited, code=exited, status=2/INVALIDARGUMENT

I do not know how it got into this inconsistent state and would appreciate advice on how to fix it.

tux93 commented 1 year ago

I guess this is a duplicate of #71, I would still appreciate pointers on how to get it running again

tux93 commented 1 year ago

As a workaround I deleted the offending entry from the discord_file table in postgres, the bridge is now able to start again.