[ 
https://issues.apache.org/jira/browse/JCR-1469?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12578320#action_12578320
 ] 

Thomas Mueller commented on JCR-1469:
-------------------------------------

Fixed in revision 636774.

This patch introduces two new methods: 
GarbageCollector.setPersistenceManagerScan and getPersistenceManagerScan. Also, 
the ScanEventListener is called even when using the PersistenceManager scan, 
however with a null Node. My first idea was to add a PseudoNode class, but 
passing null is probably OK. In that case the client could count how many times 
the method was called. I remember there is a way to get the number of nodes in 
a repository (jcr.repository.stats.nodes.count).

I agree the NodeId would be OK as well, however I think we should not change 
the API in a minor release.

I hope this patch can be included in the next minor Jackrabbit release.



> Data store garbage collection: ScanEventListener not working
> ------------------------------------------------------------
>
>                 Key: JCR-1469
>                 URL: https://issues.apache.org/jira/browse/JCR-1469
>             Project: Jackrabbit
>          Issue Type: Improvement
>          Components: jackrabbit-core
>    Affects Versions: core 1.4.1
>            Reporter: Thomas Mueller
>            Assignee: Thomas Mueller
>
> The ScanEventListener is currently only called when using the 'scan all nodes 
> recursively' strategy. It is not called when all persistence managers 
> implement IterablePersistenceManager 
> (GarbageCollector.scanPersistenceManagers). The ScanEventListener should be 
> called in every case, otherwise it is not possible to see the progress of the 
> garbage collection.
> However there is a problem: IterablePersistenceManager.getAllNodeIds() 
> doesn't return Node objects, and it would make little sense to create real 
> node objects (the performance advantage of scanPersistenceManagers would be 
> lost).
> Therefore, I propose a workaround: the ScanEventListener is called using a 
> 'PseudoNode'. This is a class that implements Node but only has meaningful 
> getUUID() and toString() methods. This allows to create a meaningful progress 
> bar (as the UUIDs are returned in order).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to