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

Non-functional read in transaction with modifications returns old value

This issue belongs to an archived project. You can view it, but you can't modify it. Learn more

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 9.0.0.Final
    • 9.0.0.Final
    • Core
    • None

      See this modified FunctionalTxInMemoryTest:

         @Test(dataProvider = "owningModeAndReadWrites")
         public void testReadWriteAfterMods(boolean isOwner, WriteMethod method) throws Exception {
            Object KEY = getKey(isOwner);
            cache(0, DIST).put(KEY, "a");
      
            tm.begin();
            assertEquals("a", rw.eval(KEY, append("b")).join());
            assertEquals("ab", rw.evalMany(Collections.singleton(KEY), append("c")).findAny().get());
            assertEquals("abc", cache(0, DIST).get(KEY)); // <-- THIS FAILS
            assertEquals(null, rw.eval("otherKey", append("d")).join());
            assertEquals("abc", method.action.eval(KEY, wo, rw,
                  MarshallableFunctions.returnReadOnlyFindOrNull(),
                  (BiConsumer<EntryView.WriteEntryView<String>, String> & Serializable) (e, prev) -> {}, getClass()));
            tm.commit();
         }
      

      When the entry was modified in given transaction, we have to do the read using functional identity read which passes all modifications along. We need to do this for all remoteGet s, including those invoked for putIfAbsent etc.

              rvansa1@redhat.com Radim Vansa (Inactive)
              rvansa1@redhat.com Radim Vansa (Inactive)
              Archiver:
              rhn-support-adongare Amol Dongare

                Created:
                Updated:
                Resolved:
                Archived: