-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Clips are slow #8413
Comments
I can't reproduce on my instance. Have you checked Postgres logs to make sure there isn't another problem at play? |
I did some analysis with Johann on fedi, and the queries generated by the ORM are simply super complicated. It has like 6 left joins and calls over to get even the md5 hashes of the banner of each user in the clips; its much faster if I write the query manually to just get the note properties. |
dang then yea that should be fixed |
yep long db query``` SELECT DISTINCT "distinctAlias"."note_id" as "ids_note_id", "distinctAlias"."note_id" FROM ( SELECT "note"."id" AS "note_id", "note"."createdAt" AS "note_createdAt", "note"."replyId" AS "note_replyId", "note"."renoteId" AS "note_renoteId", "note"."threadId" AS "note_threadId", "note"."text" AS "note_text", "note"."name" AS "note_name", "note"."cw" AS "note_cw", "note"."userId" AS "note_userId", "note"."localOnly" AS "note_localOnly", "note"."renoteCount" AS "note_renoteCount", "note"."repliesCount" AS "note_repliesCount", "note"."reactions" AS "note_reactions", "note"."visibility" AS "note_visibility", "note"."uri" AS "note_uri", "note"."url" AS "note_url", "note"."fileIds" AS "note_fileIds", "note"."attachedFileTypes" AS "note_attachedFileTypes", "note"."visibleUserIds" AS "note_visibleUserIds", "note"."mentions" AS "note_mentions", "note"."mentionedRemoteUsers" AS "note_mentionedRemoteUsers", "note"."emojis" AS "note_emojis", "note"."tags" AS "note_tags", "note"."hasPoll" AS "note_hasPoll", "note"."channelId" AS "note_channelId", "note"."userHost" AS "note_userHost", "note"."replyUserId" AS "note_replyUserId", "note"."replyUserHost" AS "note_replyUserHost", "note"."renoteUserId" AS "note_renoteUserId", "note"."renoteUserHost" AS "note_renoteUserHost", "user"."id" AS "user_id", "user"."createdAt" AS "user_createdAt", "user"."updatedAt" AS "user_updatedAt", "user"."lastFetchedAt" AS "user_lastFetchedAt", "user"."lastActiveDate" AS "user_lastActiveDate", "user"."hideOnlineStatus" AS "user_hideOnlineStatus", "user"."username" AS "user_username", "user"."name" AS "user_name", "user"."followersCount" AS "user_followersCount", "user"."followingCount" AS "user_followingCount", "user"."notesCount" AS "user_notesCount", "user"."avatarId" AS "user_avatarId", "user"."bannerId" AS "user_bannerId", "user"."tags" AS "user_tags", "user"."isSuspended" AS "user_isSuspended", "user"."isSilenced" AS "user_isSilenced", "user"."isLocked" AS "user_isLocked", "user"."isBot" AS "user_isBot", "user"."isCat" AS "user_isCat", "user"."isAdmin" AS "user_isAdmin", "user"."isModerator" AS "user_isModerator", "user"."isExplorable" AS "user_isExplorable", "user"."isDeleted" AS "user_isDeleted", "user"."emojis" AS "user_emojis", "user"."host" AS "user_host", "user"."inbox" AS "user_inbox", "user"."sharedInbox" AS "user_sharedInbox", "user"."featured" AS "user_featured", "user"."uri" AS "user_uri", "user"."followersUri" AS "user_followersUri", "user"."showTimelineReplies" AS "user_showTimelineReplies", "user"."token" AS "user_token", "avatar"."id" AS "avatar_id", "avatar"."createdAt" AS "avatar_createdAt", "avatar"."userId" AS "avatar_userId", "avatar"."userHost" AS "avatar_userHost", "avatar"."md5" AS "avatar_md5", "avatar"."name" AS "avatar_name", "avatar"."type" AS "avatar_type", "avatar"."size" AS "avatar_size", "avatar"."comment" AS "avatar_comment", "avatar"."blurhash" AS "avatar_blurhash", "avatar"."properties" AS "avatar_properties", "avatar"."storedInternal" AS "avatar_storedInternal", "avatar"."url" AS "avatar_url", "avatar"."thumbnailUrl" AS "avatar_thumbnailUrl", "avatar"."webpublicUrl" AS "avatar_webpublicUrl", "avatar"."webpublicType" AS "avatar_webpublicType", "avatar"."accessKey" AS "avatar_accessKey", "avatar"."thumbnailAccessKey" AS "avatar_thumbnailAccessKey", "avatar"."webpublicAccessKey" AS "avatar_webpublicAccessKey", "avatar"."uri" AS "avatar_uri", "avatar"."src" AS "avatar_src", "avatar"."folderId" AS "avatar_folderId", "avatar"."isSensitive" AS "avatar_isSensitive", "avatar"."isLink" AS "avatar_isLink", "banner"."id" AS "banner_id", "banner"."createdAt" AS "banner_createdAt", "banner"."userId" AS "banner_userId", "banner"."userHost" AS "banner_userHost", "banner"."md5" AS "banner_md5", "banner"."name" AS "banner_name", "banner"."type" AS "banner_type", "banner"."size" AS "banner_size", "banner"."comment" AS "banner_comment", "banner"."blurhash" AS "banner_blurhash", "banner"."properties" AS "banner_properties", "banner"."storedInternal" AS "banner_storedInternal", "banner"."url" AS "banner_url", "banner"."thumbnailUrl" AS "banner_thumbnailUrl", "banner"."webpublicUrl" AS "banner_webpublicUrl", "banner"."webpublicType" AS "banner_webpublicType", "banner"."accessKey" AS "banner_accessKey", "banner"."thumbnailAccessKey" AS "banner_thumbnailAccessKey", "banner"."webpublicAccessKey" AS "banner_webpublicAccessKey", "banner"."uri" AS "banner_uri", "banner"."src" AS "banner_src", "banner"."folderId" AS "banner_folderId", "banner"."isSensitive" AS "banner_isSensitive", "banner"."isLink" AS "banner_isLink", "reply"."id" AS "reply_id", "reply"."createdAt" AS "reply_createdAt", "reply"."replyId" AS "reply_replyId", "reply"."renoteId" AS "reply_renoteId", "reply"."threadId" AS "reply_threadId", "reply"."text" AS "reply_text", "reply"."name" AS "reply_name", "reply"."cw" AS "reply_cw", "reply"."userId" AS "reply_userId", "reply"."localOnly" AS "reply_localOnly", "reply"."renoteCount" AS "reply_renoteCount", "reply"."repliesCount" AS "reply_repliesCount", "reply"."reactions" AS "reply_reactions", "reply"."visibility" AS "reply_visibility", "reply"."uri" AS "reply_uri", "reply"."url" AS "reply_url", "reply"."fileIds" AS "reply_fileIds", "reply"."attachedFileTypes" AS "reply_attachedFileTypes", "reply"."visibleUserIds" AS "reply_visibleUserIds", "reply"."mentions" AS "reply_mentions", "reply"."mentionedRemoteUsers" AS "reply_mentionedRemoteUsers", "reply"."emojis" AS "reply_emojis", "reply"."tags" AS "reply_tags", "reply"."hasPoll" AS "reply_hasPoll", "reply"."channelId" AS "reply_channelId", "reply"."userHost" AS "reply_userHost", "reply"."replyUserId" AS "reply_replyUserId", "reply"."replyUserHost" AS "reply_replyUserHost", "reply"."renoteUserId" AS "reply_renoteUserId", "reply"."renoteUserHost" AS "reply_renoteUserHost", "renote"."id" AS "renote_id", "renote"."createdAt" AS "renote_createdAt", "renote"."replyId" AS "renote_replyId", "renote"."renoteId" AS "renote_renoteId", "renote"."threadId" AS "renote_threadId", "renote"."text" AS "renote_text", "renote"."name" AS "renote_name", "renote"."cw" AS "renote_cw", "renote"."userId" AS "renote_userId", "renote"."localOnly" AS "renote_localOnly", "renote"."renoteCount" AS "renote_renoteCount", "renote"."repliesCount" AS "renote_repliesCount", "renote"."reactions" AS "renote_reactions", "renote"."visibility" AS "renote_visibility", "renote"."uri" AS "renote_uri", "renote"."url" AS "renote_url", "renote"."fileIds" AS "renote_fileIds", "renote"."attachedFileTypes" AS "renote_attachedFileTypes", "renote"."visibleUserIds" AS "renote_visibleUserIds", "renote"."mentions" AS "renote_mentions", "renote"."mentionedRemoteUsers" AS "renote_mentionedRemoteUsers", "renote"."emojis" AS "renote_emojis", "renote"."tags" AS "renote_tags", "renote"."hasPoll" AS "renote_hasPoll", "renote"."channelId" AS "renote_channelId", "renote"."userHost" AS "renote_userHost", "renote"."replyUserId" AS "renote_replyUserId", "renote"."replyUserHost" AS "renote_replyUserHost", "renote"."renoteUserId" AS "renote_renoteUserId", "renote"."renoteUserHost" AS "renote_renoteUserHost", "replyUser"."id" AS "replyUser_id", "replyUser"."createdAt" AS "replyUser_createdAt", "replyUser"."updatedAt" AS "replyUser_updatedAt", "replyUser"."lastFetchedAt" AS "replyUser_lastFetchedAt", "replyUser"."lastActiveDate" AS "replyUser_lastActiveDate", "replyUser"."hideOnlineStatus" AS "replyUser_hideOnlineStatus", "replyUser"."username" AS "replyUser_username", "replyUser"."name" AS "replyUser_name", "replyUser"."followersCount" AS "replyUser_followersCount", "replyUser"."followingCount" AS "replyUser_followingCount", "replyUser"."notesCount" AS "replyUser_notesCount", "replyUser"."avatarId" AS "replyUser_avatarId", "replyUser"."bannerId" AS "replyUser_bannerId", "replyUser"."tags" AS "replyUser_tags", "replyUser"."isSuspended" AS "replyUser_isSuspended", "replyUser"."isSilenced" AS "replyUser_isSilenced", "replyUser"."isLocked" AS "replyUser_isLocked", "replyUser"."isBot" AS "replyUser_isBot", "replyUser"."isCat" AS "replyUser_isCat", "replyUser"."isAdmin" AS "replyUser_isAdmin", "replyUser"."isModerator" AS "replyUser_isModerator", "replyUser"."isExplorable" AS "replyUser_isExplorable", "replyUser"."isDeleted" AS "replyUser_isDeleted", "replyUser"."emojis" AS "replyUser_emojis", "replyUser"."host" AS "replyUser_host", "replyUser"."inbox" AS "replyUser_inbox", "replyUser"."sharedInbox" AS "replyUser_sharedInbox", "replyUser"."featured" AS "replyUser_featured", "replyUser"."uri" AS "replyUser_uri", "replyUser"."followersUri" AS "replyUser_followersUri", "replyUser"."showTimelineReplies" AS "replyUser_showTimelineReplies", "replyUser"."token" AS "replyUser_token", "replyUserAvatar"."id" AS "replyUserAvatar_id", "replyUserAvatar"."createdAt" AS "replyUserAvatar_createdAt", "replyUserAvatar"."userId" AS "replyUserAvatar_userId", "replyUserAvatar"."userHost" AS "replyUserAvatar_userHost", "replyUserAvatar"."md5" AS "replyUserAvatar_md5", "replyUserAvatar"."name" AS "replyUserAvatar_name", "replyUserAvatar"."type" AS "replyUserAvatar_type", "replyUserAvatar"."size" AS "replyUserAvatar_size", "replyUserAvatar"."comment" AS "replyUserAvatar_comment", "replyUserAvatar"."blurhash" AS "replyUserAvatar_blurhash", "replyUserAvatar"."properties" AS "replyUserAvatar_properties", "replyUserAvatar"."storedInternal" AS "replyUserAvatar_storedInternal", "replyUserAvatar"."url" AS "replyUserAvatar_url", "replyUserAvatar"."thumbnailUrl" AS "replyUserAvatar_thumbnailUrl", "replyUserAvatar"."webpublicUrl" AS "replyUserAvatar_webpublicUrl", "replyUserAvatar"."webpublicType" AS "replyUserAvatar_webpublicType", "replyUserAvatar"."accessKey" AS "replyUserAvatar_accessKey", "replyUserAvatar"."thumbnailAccessKey" AS "replyUserAvatar_thumbnailAccessKey", "replyUserAvatar"."webpublicAccessKey" AS "replyUserAvatar_webpublicAccessKey", "replyUserAvatar"."uri" AS "replyUserAvatar_uri", "replyUserAvatar"."src" AS "replyUserAvatar_src", "replyUserAvatar"."folderId" AS "replyUserAvatar_folderId", "replyUserAvatar"."isSensitive" AS "replyUserAvatar_isSensitive", "replyUserAvatar"."isLink" AS "replyUserAvatar_isLink", "replyUserBanner"."id" AS "replyUserBanner_id", "replyUserBanner"."createdAt" AS "replyUserBanner_createdAt", "replyUserBanner"."userId" AS "replyUserBanner_userId", "replyUserBanner"."userHost" AS "replyUserBanner_userHost", "replyUserBanner"."md5" AS "replyUserBanner_md5", "replyUserBanner"."name" AS "replyUserBanner_name", "replyUserBanner"."type" AS "replyUserBanner_type", "replyUserBanner"."size" AS "replyUserBanner_size", "replyUserBanner"."comment" AS "replyUserBanner_comment", "replyUserBanner"."blurhash" AS "replyUserBanner_blurhash", "replyUserBanner"."properties" AS "replyUserBanner_properties", "replyUserBanner"."storedInternal" AS "replyUserBanner_storedInternal", "replyUserBanner"."url" AS "replyUserBanner_url", "replyUserBanner"."thumbnailUrl" AS "replyUserBanner_thumbnailUrl", "replyUserBanner"."webpublicUrl" AS "replyUserBanner_webpublicUrl", "replyUserBanner"."webpublicType" AS "replyUserBanner_webpublicType", "replyUserBanner"."accessKey" AS "replyUserBanner_accessKey", "replyUserBanner"."thumbnailAccessKey" AS "replyUserBanner_thumbnailAccessKey", "replyUserBanner"."webpublicAccessKey" AS "replyUserBanner_webpublicAccessKey", "replyUserBanner"."uri" AS "replyUserBanner_uri", "replyUserBanner"."src" AS "replyUserBanner_src", "replyUserBanner"."folderId" AS "replyUserBanner_folderId", "replyUserBanner"."isSensitive" AS "replyUserBanner_isSensitive", "replyUserBanner"."isLink" AS "replyUserBanner_isLink", "renoteUser"."id" AS "renoteUser_id", "renoteUser"."createdAt" AS "renoteUser_createdAt", "renoteUser"."updatedAt" AS "renoteUser_updatedAt", "renoteUser"."lastFetchedAt" AS "renoteUser_lastFetchedAt", "renoteUser"."lastActiveDate" AS "renoteUser_lastActiveDate", "renoteUser"."hideOnlineStatus" AS "renoteUser_hideOnlineStatus", "renoteUser"."username" AS "renoteUser_username", "renoteUser"."name" AS "renoteUser_name", "renoteUser"."followersCount" AS "renoteUser_followersCount", "renoteUser"."followingCount" AS "renoteUser_followingCount", "renoteUser"."notesCount" AS "renoteUser_notesCount", "renoteUser"."avatarId" AS "renoteUser_avatarId", "renoteUser"."bannerId" AS "renoteUser_bannerId", "renoteUser"."tags" AS "renoteUser_tags", "renoteUser"."isSuspended" AS "renoteUser_isSuspended", "renoteUser"."isSilenced" AS "renoteUser_isSilenced", "renoteUser"."isLocked" AS "renoteUser_isLocked", "renoteUser"."isBot" AS "renoteUser_isBot", "renoteUser"."isCat" AS "renoteUser_isCat", "renoteUser"."isAdmin" AS "renoteUser_isAdmin", "renoteUser"."isModerator" AS "renoteUser_isModerator", "renoteUser"."isExplorable" AS "renoteUser_isExplorable", "renoteUser"."isDeleted" AS "renoteUser_isDeleted", "renoteUser"."emojis" AS "renoteUser_emojis", "renoteUser"."host" AS "renoteUser_host", "renoteUser"."inbox" AS "renoteUser_inbox", "renoteUser"."sharedInbox" AS "renoteUser_sharedInbox", "renoteUser"."featured" AS "renoteUser_featured", "renoteUser"."uri" AS "renoteUser_uri", "renoteUser"."followersUri" AS "renoteUser_followersUri", "renoteUser"."showTimelineReplies" AS "renoteUser_showTimelineReplies", "renoteUser"."token" AS "renoteUser_token", "renoteUserAvatar"."id" AS "renoteUserAvatar_id", "renoteUserAvatar"."createdAt" AS "renoteUserAvatar_createdAt", "renoteUserAvatar"."userId" AS "renoteUserAvatar_userId", "renoteUserAvatar"."userHost" AS "renoteUserAvatar_userHost", "renoteUserAvatar"."md5" AS "renoteUserAvatar_md5", "renoteUserAvatar"."name" AS "renoteUserAvatar_name", "renoteUserAvatar"."type" AS "renoteUserAvatar_type", "renoteUserAvatar"."size" AS "renoteUserAvatar_size", "renoteUserAvatar"."comment" AS "renoteUserAvatar_comment", "renoteUserAvatar"."blurhash" AS "renoteUserAvatar_blurhash", "renoteUserAvatar"."properties" AS "renoteUserAvatar_properties", "renoteUserAvatar"."storedInternal" AS "renoteUserAvatar_storedInternal", "renoteUserAvatar"."url" AS "renoteUserAvatar_url", "renoteUserAvatar"."thumbnailUrl" AS "renoteUserAvatar_thumbnailUrl", "renoteUserAvatar"."webpublicUrl" AS "renoteUserAvatar_webpublicUrl", "renoteUserAvatar"."webpublicType" AS "renoteUserAvatar_webpublicType", "renoteUserAvatar"."accessKey" AS "renoteUserAvatar_accessKey", "renoteUserAvatar"."thumbnailAccessKey" AS "renoteUserAvatar_thumbnailAccessKey", "renoteUserAvatar"."webpublicAccessKey" AS "renoteUserAvatar_webpublicAccessKey", "renoteUserAvatar"."uri" AS "renoteUserAvatar_uri", "renoteUserAvatar"."src" AS "renoteUserAvatar_src", "renoteUserAvatar"."folderId" AS "renoteUserAvatar_folderId", "renoteUserAvatar"."isSensitive" AS "renoteUserAvatar_isSensitive", "renoteUserAvatar"."isLink" AS "renoteUserAvatar_isLink", "renoteUserBanner"."id" AS "renoteUserBanner_id", "renoteUserBanner"."createdAt" AS "renoteUserBanner_createdAt", "renoteUserBanner"."userId" AS "renoteUserBanner_userId", "renoteUserBanner"."userHost" AS "renoteUserBanner_userHost", "renoteUserBanner"."md5" AS "renoteUserBanner_md5", "renoteUserBanner"."name" AS "renoteUserBanner_name", "renoteUserBanner"."type" AS "renoteUserBanner_type", "renoteUserBanner"."size" AS "renoteUserBanner_size", "renoteUserBanner"."comment" AS "renoteUserBanner_comment", "renoteUserBanner"."blurhash" AS "renoteUserBanner_blurhash", "renoteUserBanner"."properties" AS "renoteUserBanner_properties", "renoteUserBanner"."storedInternal" AS "renoteUserBanner_storedInternal", "renoteUserBanner"."url" AS "renoteUserBanner_url", "renoteUserBanner"."thumbnailUrl" AS "renoteUserBanner_thumbnailUrl", "renoteUserBanner"."webpublicUrl" AS "renoteUserBanner_webpublicUrl", "renoteUserBanner"."webpublicType" AS "renoteUserBanner_webpublicType", "renoteUserBanner"."accessKey" AS "renoteUserBanner_accessKey", "renoteUserBanner"."thumbnailAccessKey" AS "renoteUserBanner_thumbnailAccessKey", "renoteUserBanner"."webpublicAccessKey" AS "renoteUserBanner_webpublicAccessKey", "renoteUserBanner"."uri" AS "renoteUserBanner_uri", "renoteUserBanner"."src" AS "renoteUserBanner_src", "renoteUserBanner"."folderId" AS "renoteUserBanner_folderId", "renoteUserBanner"."isSensitive" AS "renoteUserBanner_isSensitive", "renoteUserBanner"."isLink" AS "renoteUserBanner_isLink" FROM "note" "note" INNER JOIN "user" "user" ON "user"."id" = "note"."userId" LEFT JOIN "drive_file" "avatar" ON "avatar"."id" = "user"."avatarId" LEFT JOIN "drive_file" "banner" ON "banner"."id" = "user"."bannerId" LEFT JOIN "note" "reply" ON "reply"."id" = "note"."replyId" LEFT JOIN "note" "renote" ON "renote"."id" = "note"."renoteId" LEFT JOIN "user" "replyUser" ON "replyUser"."id" = "reply"."userId" LEFT JOIN "drive_file" "replyUserAvatar" ON "replyUserAvatar"."id" = "replyUser"."avatarId" LEFT JOIN "drive_file" "replyUserBanner" ON "replyUserBanner"."id" = "replyUser"."bannerId" LEFT JOIN "user" "renoteUser" ON "renoteUser"."id" = "renote"."userId" LEFT JOIN "drive_file" "renoteUserAvatar" ON "renoteUserAvatar"."id" = "renoteUser"."avatarId" LEFT JOIN "drive_file" "renoteUserBanner" ON "renoteUserBanner"."id" = "renoteUser"."bannerId" WHERE "note"."id" IN ( SELECT "joining"."noteId" AS "joining_noteId" FROM "clip_note" "joining" WHERE "joining"."clipId" = $1 ) AND ( ( "note"."visibility" = 'public' OR "note"."visibility" = 'home' ) OR "note"."userId" = $2 OR '{"8xj1mujsjd"}' < @ "note"."visibleUserIds" OR ( "note"."visibility" = 'followers' AND ( "note"."userId" IN ( SELECT "following"."followeeId" AS "following_followeeId" FROM "following" "following" WHERE "following"."followerId" = $3 ) OR "note"."replyUserId" = $4 ) ) ) AND "note"."userId" NOT IN ( SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $5 ) AND ( "note"."replyUserId" IS NULL OR "note"."replyUserId" NOT IN ( SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $6 ) ) AND ( "note"."renoteUserId" IS NULL OR "note"."renoteUserId" NOT IN ( SELECT "muting"."muteeId" AS "muting_muteeId" FROM "muting" "muting" WHERE "muting"."muterId" = $7 ) ) AND "note"."userId" NOT IN ( SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $8 ) AND ( "note"."replyUserId" IS NULL OR "note"."replyUserId" NOT IN ( SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $9 ) ) AND ( "note"."renoteUserId" IS NULL OR "note"."renoteUserId" NOT IN ( SELECT "blocking"."blockerId" AS "blocking_blockerId" FROM "blocking" "blocking" WHERE "blocking"."blockeeId" = $10 ) ) ) "distinctAlias" ORDER BY "distinctAlias"."note_id" DESC, "note_id" ASC LIMIT 11 parameters : $1 = '8xxjqqd8ly', $2 = '8xj1mujsjd', $3 = '8xj1mujsjd', $4 = '8xj1mujsjd', $5 = '8xj1mujsjd', $6 = '8xj1mujsjd', $7 = '8xj1mujsjd', $8 = '8xj1mujsjd', $9 = '8xj1mujsjd', $10 = '8xj1mujsjd' ``` |
😨 |
Another thing to keep in mind; my notes db is already like 16gb, as it's an older instance. Though it's fine on misskey.io, so maybe their servers are just extremely beefy. |
💡 Summary
Viewing a clip is very slow. Even with a clip with just one note in it, it takes a bit, and with the new 10 second limit it sometimes fails entirely.
🥰 Expected Behavior
Viewing a clip should be a lot quicker.
🤬 Actual Behavior
Attempting to view a clip takes a while. I think it's related to the size of the database and the power of the machine.
📝 Steps to Reproduce
📌 Environment
Misskey latest Master with some patches ( https://github.com/nullobsi/misskey )
Your OS: android 12
Your browser: Bromite
Notes: I can't reproduce this on some other instances I've tried. Is there a way to debug DB queries?
The text was updated successfully, but these errors were encountered: