Senior
Tööline töötab kaua (2 minutit), tehing jääb andmebaasi, kui süsteem kukub — mida teha?
sobes.tech AI
Vastus AI-lt
Kui töötaja töötab pikka aega (umbes 2 minutit) ja langemise korral jääb tehing andmebaasi, tähendab see, et tehing ei lõpetatud korrektselt (commit/rollback), ning andmebaas hoiab lukke.
Mida teha:
- Kasuta konteksti koos ajapiiranguga Go-s, et piirata tehingu täitmise aega. Näiteks:
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
defer cancel()
err := db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
// operatsioonid
return nil
})
-
Haldage vigu ja tagage rollback ebaõnnestumise korral.
-
Kontrollige andmebaasi logisid ummikus olevate tehingute jaoks ning lõpetage need käsitsi, kui vaja.
-
Kaaluge heartbeat või tervise kontrolli mehhanismi kasutamist töötaja jaoks, et langemise korral ülesanded automaatselt taaskäivituksid.
-
Optimeerige töötaja tööd, et tehingud ei kestaks liiga kaua — võib-olla jagada ülesanne väiksemateks osadeks.
Oluline on jälgida tehingute eluea pikkust ja neid õigesti lõpetada, et vältida lukke ja seiskunud olekuid.