[ 
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)

Reply via email to