Sobes.tech
Junior — Middle

Czy możesz wymienić typowe błędy popełniane podczas korzystania z transakcji?

sobes.tech AI

Odpowiedź od AI

Typowe błędy podczas pracy z transakcjami w Go:

  1. Niejawne ignorowanie błędów — zapominanie o sprawdzaniu błędów po operacjach na transakcji (np. po tx.Commit() lub tx.Rollback()), co może prowadzić do niezaobserwowanych problemów.

  2. Brak wycofania w przypadku błędów — jeśli podczas transakcji wystąpi błąd, nie wywołują tx.Rollback(), co może prowadzić do blokad lub niespójności danych.

  3. Podwójne wywołanie Commit lub Rollback — wielokrotne wywoływanie tych metod może spowodować panikę lub błąd.

  4. Długie utrzymywanie transakcji — transakcja otwarta zbyt długo blokuje inne operacje i obniża wydajność.

  5. Używanie transakcji bez kontekstu — nie przekazują context.Context do metod, co utrudnia anulowanie lub ustawianie limitów czasowych.

Przykład poprawnego użycia transakcji:

ctx := context.Background()
tx, err := db.BeginTx(ctx, nil)
if err != nil {
    // obsługa błędu
}

// Wykonywanie operacji
if _, err := tx.ExecContext(ctx, "INSERT INTO ..."); err != nil {
    tx.Rollback()
    return err
}

if err := tx.Commit(); err != nil {
    return err
}

Zawsze ważne jest obsługiwanie błędów i poprawne kończenie transakcji.