[
https://issues.apache.org/jira/browse/OAK-567?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13557077#comment-13557077
]
Thomas Mueller commented on OAK-567:
------------------------------------
I thought about that as well, but given that the DiffBuilder API uses
NodeState, I was not sure if we can guarantee that it's always a
StoreNodeAsState and not sometimes a different class. Then it would break (the
hashCode could be different even if the object is the same). And if we change
DiffBuilder to use StoreNodeAsState instead of StoreNode, then we still don't
know if in the future somebody would use different NodeState implementations in
the same class.
This problem would go away if StoreNodeAsState doesn't implement NodeState and
doesn't extend AbstractNodeState. If StoreNodeAsState is the only NodeState
class (it seems to be within the oak-mk project according to Eclipse), then we
could even remove NodeState and AbstractNodeState. Or is the interface uses
somewhere else?
> DiffBuilder performance problem
> -------------------------------
>
> Key: OAK-567
> URL: https://issues.apache.org/jira/browse/OAK-567
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: mk
> Reporter: Thomas Mueller
> Attachments: OAK-567.patch
>
>
> The org.apache.jackrabbit.mk.model.tree.DiffBuilder is very slow because it
> uses:
> {code}
> HashMap<NodeState, String>
> {code}
> and at the same time
> {code}
> class AbstractNodeState implements NodeState {
> /**
> * Returns a hash code that's compatible with how the
> * {@link #equals(Object)} method is implemented. The current
> * implementation simply returns zero for everything since
> * {@link NodeState} instances are not intended for use as hash keys.
> *
> * @return hash code
> */
> @Override
> public int hashCode() {
> return 0;
> }
> }
> {code}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira