[
https://issues.apache.org/jira/browse/OAK-7710?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16612630#comment-16612630
]
Vikas Saurabh commented on OAK-7710:
------------------------------------
[~tomek.rekawek], afaiu, now locally observed events would be dispatched
essentially from inside {{globalStore#merge}}. There's a good chunk of code
(which, admittedly, I don't quite grasp) beyond {{globalStore#merge}} in
{{merge}} method \[0] - the dispatched, afaiu, refers to new
{{'global'NodeState}} but still old states from other stores (which would be ok
afaict - those being read-only)... but there's that hookEnhancer thing (which
I've no idea about).
Can you please confirm that we're still ok?
\[0]:
{noformat}
if (!hookEnhancer.getUpdatedBuilder().isPresent()) {
// it means that the commit hook wasn't invoked, because there
were
// no changes on the global store. we should invoke it anyway.
hookEnhancer.processCommit(globalResult, globalResult, info);
}
CompositeNodeBuilder updatedBuilder =
hookEnhancer.getUpdatedBuilder().get();
// merge the partial builders
for (MountedNodeStore mns : ctx.getNonDefaultStores()) {
NodeBuilder partialBuilder = updatedBuilder.getNodeBuilder(mns);
if (mns.getMount().isReadOnly()) {
assertNoChange(mns, partialBuilder);
resultStates.put(mns, mns.getNodeStore().getRoot());
} else {
NodeState partialState =
mns.getNodeStore().merge(partialBuilder, EmptyHook.INSTANCE, info);
resultStates.put(mns, partialState);
}
}
CompositeNodeState newRoot = ctx.createRootNodeState(resultStates);
{noformat}
> CompositeNodeStore does not dispatch external events to observers
> -----------------------------------------------------------------
>
> Key: OAK-7710
> URL: https://issues.apache.org/jira/browse/OAK-7710
> Project: Jackrabbit Oak
> Issue Type: Bug
> Components: composite
> Reporter: Vikas Saurabh
> Assignee: Tomek Rękawek
> Priority: Major
> Fix For: 1.10, 1.9.9
>
> Attachments: OAK-7710-2.patch, OAK-7710-3.patch, OAK-7710.patch,
> OAK-7710.test.patch
>
>
> Currently {{CompositeNodeStore}} only ever dispatches changes from inside its
> {{merge}} method. This then loses external events that could be read in
> background read of some underlying {{DocumentNodeStore}}.
> [^OAK-7710.test.patch] has an ignored test representing the scenario.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)