Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-3738

Entry version gets lost during topology change -> NPE

    XMLWordPrintable

    Details

      Description

      Replicated TX cache with WSC, A, B are in cluster, C is joining

      0. The current CH already contains A and B as owners, C is joining (is not primary owner of anything yet). B is primary owner of K=V.
      1. A sends PrepareCommand to B and C with put(K, V) (V is null on all nodes)
      2. C receives PrepareCommand and responds with no versions (it is not primary owner)
      3. topology changes on B - primary ownership of K is transfered to C
      4. B receives PrepareCommand, responds without K's version (it is not primary)
      5. B forwards the Prepare to C as it sees that the command has lower topology ID
      6. C responds to B's prepare with version of K
      7. K version is not added to B's response, B responds to A
      8. A finds out that topology has changed, forwards prepare to C
      9. C responds to C's prepare with version of K
      10. A receives C's response, but the versions are not added to transaction
      11. A sends out CommitCommand missing version of K
      12. all nodes record K=V without version as usual ImmortalCacheEntry
      13. the next time we try to increase version of K=V, we fail with NPE in SimpleClusteredVersionGenerator (actually when it tries to throw IllegalArgumentException because the null version is unexpected version class)

        Attachments

          Activity

            People

            Assignee:
            pruivo Pedro Ruivo
            Reporter:
            rvansa Radim Vansa (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: