Dan Smith created GEODE-698: ------------------------------- Summary: Concurrent transactional and non transactional operations on the same key can result in inconsistency Key: GEODE-698 URL: https://issues.apache.org/jira/browse/GEODE-698 Project: Geode Issue Type: Bug Reporter: Dan Smith
The basic issue here is that the locks obtained by the transactions are not the same as the locks that non transactional operations use. So a non transactional operation can overlap with a transaction that is in the middle of committing the same key. Here are the details: 1. Thread 1 - Do a put in a transaction on the primary. Start the commit 2. Thread 1 - In TXState.commit, we call apply changes, which updates the local cache. 3. Thread 2 - do a query on the primary and find the key. 4. Thread 2 - Do a destroy on the same key. There is no lock that blocks this destroy, so it goes through and is applied to all members. 5. Thread 1 - Let TXState.commit continue. It creates a TXCommitMessage and sends it 6. Thread 1 - The TXCommit message applies the entry to the secondary. At this point the secondary has the entry but the primary has removed it. -- This message was sent by Atlassian JIRA (v6.3.4#6332)