jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martijn Hendriks (JIRA)" <j...@apache.org>
Subject [jira] Commented: (JCR-1078) ChangeLog serialization causes cache inconsistencies
Date Thu, 23 Aug 2007 08:32:31 GMT

    [ https://issues.apache.org/jira/browse/JCR-1078?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12522061

Martijn Hendriks commented on JCR-1078:

I think that the following holds for a ChangeLog:

1) state \in addedStates => no deleted(state) events after the added(state) event.
2) state \in modifiedStated => no added(state) event and no deleted(state) event after
the modified(state) event
3) state \in deletedStates => no added(state) event earlier

The serialization code should derive an ordering such that these properties hold.

> ChangeLog serialization causes cache inconsistencies
> ----------------------------------------------------
>                 Key: JCR-1078
>                 URL: https://issues.apache.org/jira/browse/JCR-1078
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: clustering
>    Affects Versions: 1.3
>         Environment: Clustered Jackrabbit 1.3
>            Reporter: Martijn Hendriks
> The ordering of actions is taken into account when a ChangeLog is built through session
manipulations (see, for instance,  ChangeLog.deleted(ItemState state)). When it is serialized
in ClusterNode.write(Record record, ChangeLog changeLog, EventStateCollection esc), however,
this implicit ordering might be changed. As a consequence,  the deserialization in ClusterNode.consume(Record
record) might produce a different ChangeLog with the effect that the local caches get out-of-sync
with the persistent state of the repository.
> The issue should be reproducable as follows:
> - Setup a clustered environment with two Jackrabbit instances, say A and B.
> - On instance A add a property "P" with value "x" to some node and save the session.
> - On instance B read property "P" -> it will have value "x".
> - On instance A delete property P and then add it again with value "y" and save the session.
> - On instance B read property "P" -> it will still have value "x" after the cluster

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

View raw message