From 4e84f49de9662f385bd34acceeafff898140c189 Mon Sep 17 00:00:00 2001 From: David Dworken Date: Sat, 26 Nov 2022 18:59:32 -0800 Subject: [PATCH] Revert "Move usage data into tx to optimize updating usage data" This reverts commit aa501262e65a27b04276bb6e688e043c7f6d1d92. --- backend/server/server.go | 30 ++++++++++++------------------ backend/server/server_test.go | 2 -- 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/backend/server/server.go b/backend/server/server.go index df0a43e..f490daa 100644 --- a/backend/server/server.go +++ b/backend/server/server.go @@ -69,26 +69,20 @@ func getHishtoryVersion(r *http.Request) string { func updateUsageData(ctx context.Context, r *http.Request, userId, deviceId string, numEntriesHandled int, isQuery bool) { var usageData []UsageData GLOBAL_DB.WithContext(ctx).Where("user_id = ? AND device_id = ?", userId, deviceId).Find(&usageData) - err := GLOBAL_DB.WithContext(ctx).Transaction(func(tx *gorm.DB) error { - if len(usageData) == 0 { - tx.Create(&UsageData{UserId: userId, DeviceId: deviceId, LastUsed: time.Now(), NumEntriesHandled: numEntriesHandled, Version: getHishtoryVersion(r)}) - } else { - usage := usageData[0] - tx.Model(&UsageData{}).Where("user_id = ? AND device_id = ?", userId, deviceId).Update("last_used", time.Now()).Update("last_ip", getRemoteAddr(r)) - if numEntriesHandled > 0 { - tx.Exec("UPDATE usage_data SET num_entries_handled = COALESCE(num_entries_handled, 0) + ? WHERE user_id = ? AND device_id = ?", numEntriesHandled, userId, deviceId) - } - if usage.Version != getHishtoryVersion(r) { - tx.Exec("UPDATE usage_data SET version = ? WHERE user_id = ? AND device_id = ?", getHishtoryVersion(r), userId, deviceId) - } + if len(usageData) == 0 { + GLOBAL_DB.WithContext(ctx).Create(&UsageData{UserId: userId, DeviceId: deviceId, LastUsed: time.Now(), NumEntriesHandled: numEntriesHandled, Version: getHishtoryVersion(r)}) + } else { + usage := usageData[0] + GLOBAL_DB.WithContext(ctx).Model(&UsageData{}).Where("user_id = ? AND device_id = ?", userId, deviceId).Update("last_used", time.Now()).Update("last_ip", getRemoteAddr(r)) + if numEntriesHandled > 0 { + GLOBAL_DB.WithContext(ctx).Exec("UPDATE usage_data SET num_entries_handled = COALESCE(num_entries_handled, 0) + ? WHERE user_id = ? AND device_id = ?", numEntriesHandled, userId, deviceId) } - if isQuery { - tx.Exec("UPDATE usage_data SET num_queries = COALESCE(num_queries, 0) + 1, last_queried = ? WHERE user_id = ? AND device_id = ?", time.Now(), userId, deviceId) + if usage.Version != getHishtoryVersion(r) { + GLOBAL_DB.WithContext(ctx).Exec("UPDATE usage_data SET version = ? WHERE user_id = ? AND device_id = ?", getHishtoryVersion(r), userId, deviceId) } - return nil - }) - if err != nil { - panic(fmt.Errorf("failed to execute transaction to update usage data DB: %v", err)) + } + if isQuery { + GLOBAL_DB.WithContext(ctx).Exec("UPDATE usage_data SET num_queries = COALESCE(num_queries, 0) + 1, last_queried = ? WHERE user_id = ? AND device_id = ?", time.Now(), userId, deviceId) } } diff --git a/backend/server/server_test.go b/backend/server/server_test.go index 3dafd91..074cc9d 100644 --- a/backend/server/server_test.go +++ b/backend/server/server_test.go @@ -489,5 +489,3 @@ func TestDeletionRequests(t *testing.T) { t.Error(diff) } } - -// TODO: test add tests that check usage data