[ 
https://issues.apache.org/jira/browse/JENA-1785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16985446#comment-16985446
 ] 

Pavel Mikhailovskii commented on JENA-1785:
-------------------------------------------

The problem with the miss cache making its correct implementation very 
difficult is that it requires not only application or rollback of changes made 
in write transactions but also proper handling of different versions of the 
cache even for read transactions - a long-running read transaction started a 
certain number of commits ago should see the database at that point in time 
(Transaction.dataVersion) and ignore all nodes added in subsequent commits.  


> 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: 10m
>  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