You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Felix Meschberger (JIRA)" <ji...@apache.org> on 2004/10/29 09:46:33 UTC

[jira] Commented: (JCR-15) PersistentNode.store() ignores status when storing

     [ http://issues.apache.org/jira/browse/JCR-15?page=comments#action_54789 ]
     
Felix Meschberger commented on JCR-15:
--------------------------------------

Just for checking I added "if (status == STATUS_EXISTING) return;" at the beginning of the PersistentNodeState.store() and performance increased depending on the number of history entries from 2x times way up to 10x and more !

BTW: I just noticed, that PersistentPropertyState has the same issue  of storing without checking for the need to store.

> PersistentNode.store() ignores status when storing
> --------------------------------------------------
>
>          Key: JCR-15
>          URL: http://issues.apache.org/jira/browse/JCR-15
>      Project: Jackrabbit
>         Type: Bug
>  Environment: Jackrabbit SVN revision 55714
>     Reporter: Felix Meschberger

>
> While looking for a performance bottle neck I came across this issue: When a PersistentNodeState is asked to store itself in the PersistentNodeState.store() method, it calls its PersistenceManager to store it.
> This is not a problem in itself. The problem is, that if the PersistentNodeState has not been modified, the object does not need to be stored. Doiing it anyway just consumes cycles ! In the case of a deep, unmodified hierarchy, this just results in nodes being written to persistence for nothing.
> Comes to it, that this method sends an event, which in the case of an unmodified node state will be notifyStateUpdated(), which is complete nonsense, because nothing has actually been updated.
> I suggest to modify the PersistentNodeState.store() method to only do work if modified.
> Note: I encountered this issue, whily tracking down performance problems when creating versionable nodes, which turned out to be located somewhere within the PersistentVersionManager.createVersionHistory(NodeImpl) method. And there, predominantly the store() methods consume time.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira