[ https://issues.apache.org/jira/browse/JENA-1785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16989901#comment-16989901 ]
Pavel Mikhailovskii commented on JENA-1785: ------------------------------------------- This is indeed a correct explanation of the problem. To put it short, the problem is that even though newly added nodes are removed from the local version of the not-present cache, they don't get removed from the global cache on commit. > A newly created node can remain invisible after commit > ------------------------------------------------------ > > Key: JENA-1785 > URL: https://issues.apache.org/jira/browse/JENA-1785 > Project: Apache Jena > Issue Type: Bug > Components: TDB2 > Affects Versions: Jena 3.13.0, Jena 3.13.1 > Reporter: Pavel Mikhailovskii > Assignee: Andy Seaborne > Priority: Critical > Attachments: TestVisibilityOfChanges.java > > Time Spent: 1h > Remaining Estimate: 0h > > A node once marked as non-present (_NodeTableCache.nonPresent_) can remain > invisible even after it's created and the transaction is committed. That > might happen because there's no guarantee that *all* newly created nodes will > be eventually added to the "base" version _ThreadBufferingCache.baseCache_ of > theĀ _node2id_Cache_ (as the _localCache_ has limited capacity) or removed > from the "base" version of the _nonPresent_ cache (even if they were, there > would still be a chance of re-adding them by some read transaction). > The simplest fix is to get rid of the _nonPresent_ cache which seems to be of > limited use anyway. A more sophisticated fix would involve keeping track of > all newly allocated nodes and their removal from the base version of > _nonPresent_ cache on transaction commit. > To reproduce: see the attached test. -- This message was sent by Atlassian Jira (v8.3.4#803005)