Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-12739

Optimistic serializable transactions may fail infinitely when read-through is enabled

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.8
    • 2.9
    • None
    • None

    Description

      In current design it is possible that the same key-value pair will be stored with different versions on primary and backup nodes. For example, a read-through is invoked separately on primary backup and values are stored with node local version.

      With this precondition, if an optimistic serializable transaction is started from a backup node, the serializable check version is read from backup, but validated on primary node, which will fail the transaction with optimistic read/write conflict exception until the versions are overwritten to the same value (for example, via a pessimistic transaction).

      While we need to additionally investigate whether we want to change the read-through logic to ensure the same value and version on all nodes, this particular scenario should be fixed by always enforcing reading from a primary node inside an optimistic serializable transaction.

      The reproducer is attached. A known workaround is to disable read load balancing by setting "-DIGNITE_READ_LOAD_BALANCING=false" system property.

      Attachments

        1. ReplicatedOptimisticTxTest.java
          4 kB
          Alexey Goncharuk

        Issue Links

          Activity

            People

              vladsz83 Vladimir Steshin
              agoncharuk Alexey Goncharuk
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - Not Specified
                  Not Specified
                  Remaining:
                  Remaining Estimate - 0h
                  0h
                  Logged:
                  Time Spent - 1h
                  1h