Skip to content

RDB Loader: fix serializable isolation violation errors #557

Open
@chuwy

Description

@chuwy

We have tens of occurences of this error for different clients:

com.snowplowanalytics.snowplow.rdbloader.LoaderError$StorageTargetError: Database error: [Amazon](500310) Invalid operation: 1023 
Details: Serializable isolation violation on table - 100167, transactions forming the cycle are: 55705701, 55705754 (pid:16606);
    at com.snowplowanalytics.snowplow.rdbloader.dsl.JDBC$$anon$1.$anonfun$executeUpdate$1(JDBC.scala:165)
    at raiseError @ retry.package$.retry$package$$retryingOnSomeErrorsImpl(package.scala:81)
    at map @ com.snowplowanalytics.iglu.client.Client$.parseDefault(Client.scala:56)
    at tailRecM @ retry.package$RetryingOnSomeErrorsPartiallyApplied.apply(package.scala:96)
    at blockOn$extension @ doobie.free.KleisliInterpreter.$anonfun$primitive$1(kleisliinterpreter.scala:112)
    at $anonfun$tailRecM$1 @ doobie.util.transactor$Transactor$$anon$4.$anonfun$apply$4(transactor.scala:167)
    at tailRecM @ retry.package$RetryingOnSomeErrorsPartiallyApplied.apply(package.scala:96)
    at tailRecM @ retry.package$RetryingOnSomeErrorsPartiallyApplied.apply(package.scala:96)

To me it looks like Loader's COPY transaction races with another client's transaction. Or maybe our retry mechanism somehow runs parallel transaction? If former case - we can handle it with a plain failure handler, retrying the whole loading a bit later.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions