Details
-
Bug
-
Resolution: Done
-
Major
-
9.0.0.CR1
-
None
Description
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.
Attachments
Issue Links
- is related to
-
ISPN-7908 Streams in transaction don't consider entries modified by functional commands
- Closed