Annotations: Fix database lock while updating annotations (#71199)

This commit is contained in:
Emil Tullstedt 2023-07-07 15:21:49 +02:00 committed by GitHub
parent 217265baee
commit 56f52dc97e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 36 additions and 1 deletions

View File

@ -143,7 +143,13 @@ func (r *xormRepositoryImpl) synchronizeTags(ctx context.Context, item *annotati
} }
func (r *xormRepositoryImpl) Update(ctx context.Context, item *annotations.Item) error { func (r *xormRepositoryImpl) Update(ctx context.Context, item *annotations.Item) error {
return r.db.WithTransactionalDbSession(ctx, func(sess *db.Session) error { return r.db.InTransaction(ctx, func(ctx context.Context) error {
return r.update(ctx, item)
})
}
func (r *xormRepositoryImpl) update(ctx context.Context, item *annotations.Item) error {
return r.db.WithDbSession(ctx, func(sess *db.Session) error {
var ( var (
isExist bool isExist bool
err error err error

View File

@ -368,6 +368,35 @@ func TestIntegrationAnnotations(t *testing.T) {
assert.Greater(t, items[0].Updated, items[0].Created) assert.Greater(t, items[0].Updated, items[0].Created)
}) })
t.Run("Can update annotation with additional tags", func(t *testing.T) {
query := &annotations.ItemQuery{
OrgID: 1,
DashboardID: 1,
From: 0,
To: 15,
SignedInUser: testUser,
}
items, err := repo.Get(context.Background(), query)
require.NoError(t, err)
annotationId := items[0].ID
err = repo.Update(context.Background(), &annotations.Item{
ID: annotationId,
OrgID: 1,
Text: "something new",
Tags: []string{"newtag1", "newtag3"},
})
require.NoError(t, err)
items, err = repo.Get(context.Background(), query)
require.NoError(t, err)
assert.Equal(t, annotationId, items[0].ID)
assert.Equal(t, []string{"newtag1", "newtag3"}, items[0].Tags)
assert.Equal(t, "something new", items[0].Text)
assert.Greater(t, items[0].Updated, items[0].Created)
})
t.Run("Can update annotations with data", func(t *testing.T) { t.Run("Can update annotations with data", func(t *testing.T) {
query := &annotations.ItemQuery{ query := &annotations.ItemQuery{
OrgID: 1, OrgID: 1,