diff options
author | 2023-07-25 09:34:05 +0100 | |
---|---|---|
committer | 2023-07-25 10:34:05 +0200 | |
commit | 5f3e0957179eddd088e82b8f8f493164cbc9ce37 (patch) | |
tree | b169630ef1ac269dc96d74b533f6663dc0f1e6fc /internal/db/emoji.go | |
parent | [feature/performance] support uncaching remote emoji + scheduled cleanup func... (diff) | |
download | gotosocial-5f3e0957179eddd088e82b8f8f493164cbc9ce37.tar.xz |
[performance] retry db queries on busy errors (#2025)
* catch SQLITE_BUSY errors, wrap bun.DB to use our own busy retrier, remove unnecessary db.Error type
Signed-off-by: kim <grufwub@gmail.com>
* remove dead code
Signed-off-by: kim <grufwub@gmail.com>
* remove more dead code, add missing error arguments
Signed-off-by: kim <grufwub@gmail.com>
* update sqlite to use maxOpenConns()
Signed-off-by: kim <grufwub@gmail.com>
* add uncommitted changes
Signed-off-by: kim <grufwub@gmail.com>
* use direct calls-through for the ConnIface to make sure we don't double query hook
Signed-off-by: kim <grufwub@gmail.com>
* expose underlying bun.DB better
Signed-off-by: kim <grufwub@gmail.com>
* retry on the correct busy error
Signed-off-by: kim <grufwub@gmail.com>
* use longer possible maxRetries for db retry-backoff
Signed-off-by: kim <grufwub@gmail.com>
* remove the note regarding max-open-conns only applying to postgres
Signed-off-by: kim <grufwub@gmail.com>
* improved code commenting
Signed-off-by: kim <grufwub@gmail.com>
* remove unnecessary infof call (just use info)
Signed-off-by: kim <grufwub@gmail.com>
* rename DBConn to WrappedDB to better follow sql package name conventions
Signed-off-by: kim <grufwub@gmail.com>
* update test error string checks
Signed-off-by: kim <grufwub@gmail.com>
* shush linter
Signed-off-by: kim <grufwub@gmail.com>
* update backoff logic to be more transparent
Signed-off-by: kim <grufwub@gmail.com>
---------
Signed-off-by: kim <grufwub@gmail.com>
Diffstat (limited to 'internal/db/emoji.go')
-rw-r--r-- | internal/db/emoji.go | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/internal/db/emoji.go b/internal/db/emoji.go index 67d7f7232..c4dabd1aa 100644 --- a/internal/db/emoji.go +++ b/internal/db/emoji.go @@ -31,16 +31,16 @@ const EmojiAllDomains string = "all" // Emoji contains functions for getting emoji in the database. type Emoji interface { // PutEmoji puts one emoji in the database. - PutEmoji(ctx context.Context, emoji *gtsmodel.Emoji) Error + PutEmoji(ctx context.Context, emoji *gtsmodel.Emoji) error // UpdateEmoji updates the given columns of one emoji. // If no columns are specified, every column is updated. UpdateEmoji(ctx context.Context, emoji *gtsmodel.Emoji, columns ...string) error // DeleteEmojiByID deletes one emoji by its database ID. - DeleteEmojiByID(ctx context.Context, id string) Error + DeleteEmojiByID(ctx context.Context, id string) error // GetEmojisByIDs gets emojis for the given IDs. - GetEmojisByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Emoji, Error) + GetEmojisByIDs(ctx context.Context, ids []string) ([]*gtsmodel.Emoji, error) // GetUseableEmojis gets all emojis which are useable by accounts on this instance. - GetUseableEmojis(ctx context.Context) ([]*gtsmodel.Emoji, Error) + GetUseableEmojis(ctx context.Context) ([]*gtsmodel.Emoji, error) // GetEmojis fetches all emojis with IDs less than 'maxID', up to a maximum of 'limit' emojis. GetEmojis(ctx context.Context, maxID string, limit int) ([]*gtsmodel.Emoji, error) @@ -54,22 +54,22 @@ type Emoji interface { // GetEmojisBy gets emojis based on given parameters. Useful for admin actions. GetEmojisBy(ctx context.Context, domain string, includeDisabled bool, includeEnabled bool, shortcode string, maxShortcodeDomain string, minShortcodeDomain string, limit int) ([]*gtsmodel.Emoji, error) // GetEmojiByID gets a specific emoji by its database ID. - GetEmojiByID(ctx context.Context, id string) (*gtsmodel.Emoji, Error) + GetEmojiByID(ctx context.Context, id string) (*gtsmodel.Emoji, error) // GetEmojiByShortcodeDomain gets an emoji based on its shortcode and domain. // For local emoji, domain should be an empty string. - GetEmojiByShortcodeDomain(ctx context.Context, shortcode string, domain string) (*gtsmodel.Emoji, Error) + GetEmojiByShortcodeDomain(ctx context.Context, shortcode string, domain string) (*gtsmodel.Emoji, error) // GetEmojiByURI returns one emoji based on its ActivityPub URI. - GetEmojiByURI(ctx context.Context, uri string) (*gtsmodel.Emoji, Error) + GetEmojiByURI(ctx context.Context, uri string) (*gtsmodel.Emoji, error) // GetEmojiByStaticURL gets an emoji using the URL of the static version of the emoji image. - GetEmojiByStaticURL(ctx context.Context, imageStaticURL string) (*gtsmodel.Emoji, Error) + GetEmojiByStaticURL(ctx context.Context, imageStaticURL string) (*gtsmodel.Emoji, error) // PutEmojiCategory puts one new emoji category in the database. - PutEmojiCategory(ctx context.Context, emojiCategory *gtsmodel.EmojiCategory) Error + PutEmojiCategory(ctx context.Context, emojiCategory *gtsmodel.EmojiCategory) error // GetEmojiCategoriesByIDs gets emoji categories for given IDs. - GetEmojiCategoriesByIDs(ctx context.Context, ids []string) ([]*gtsmodel.EmojiCategory, Error) + GetEmojiCategoriesByIDs(ctx context.Context, ids []string) ([]*gtsmodel.EmojiCategory, error) // GetEmojiCategories gets a slice of the names of all existing emoji categories. - GetEmojiCategories(ctx context.Context) ([]*gtsmodel.EmojiCategory, Error) + GetEmojiCategories(ctx context.Context) ([]*gtsmodel.EmojiCategory, error) // GetEmojiCategory gets one emoji category by its id. - GetEmojiCategory(ctx context.Context, id string) (*gtsmodel.EmojiCategory, Error) + GetEmojiCategory(ctx context.Context, id string) (*gtsmodel.EmojiCategory, error) // GetEmojiCategoryByName gets one emoji category by its name. - GetEmojiCategoryByName(ctx context.Context, name string) (*gtsmodel.EmojiCategory, Error) + GetEmojiCategoryByName(ctx context.Context, name string) (*gtsmodel.EmojiCategory, error) } |