From 64e439a66cef0360b60cb6d3fcd65395ebc28375 Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Thu, 2 Feb 2023 17:08:59 +0100 Subject: dashboard: prevent contention on mass crash update Without sleeping there's a big risk of getting an `API error 2 (datastore_v3: CONCURRENT_TRANSACTION): too much contention on these datastore entities. please try again.` error. --- dashboard/app/asset_storage.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dashboard/app/asset_storage.go b/dashboard/app/asset_storage.go index fba449223..a8492a3e8 100644 --- a/dashboard/app/asset_storage.go +++ b/dashboard/app/asset_storage.go @@ -414,6 +414,12 @@ func (ad *crashAssetDeprecator) batchProcessCrashes(count int) error { toDelete = append(toDelete, asset.DownloadURL) } } + if i > 0 { + // Sleep for one second to prevent the "API error 2 (datastore_v3: + // CONCURRENT_TRANSACTION): too much contention on these datastore + // entities. please try again." error. + time.Sleep(time.Second) + } err := ad.updateCrash(crashKeys[i], toDelete) if err != nil { return err -- cgit mrf-deployment