[jira] [Created] (OAK-4920) Performance: DefaultSyncHandler.listIdentities() search too broad, triggers traversal warning

2016-10-10 Thread Alexander Klimetschek (JIRA)
Alexander Klimetschek created OAK-4920:
--

 Summary: Performance: DefaultSyncHandler.listIdentities() search 
too broad, triggers traversal warning
 Key: OAK-4920
 URL: https://issues.apache.org/jira/browse/OAK-4920
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: auth-external
Affects Versions: 1.5.11, 1.4.8
Reporter: Alexander Klimetschek


DefaultSyncHandler.listIdentities() collects users by [searching for all nodes 
under 
/home|https://github.com/apache/jackrabbit-oak/blob/b3e62e3467bf6433b5a419c2f371331f33e57820/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java#L143]
 – the xpath query executed is 
{{/jcr:root/home//element(\*)\[@jcr:primaryType]}}. With a few hundred users 
this easily gives an oak index traversal warning:
{noformat}
org.apache.jackrabbit.oak.spi.query.Cursors$TraversingCursor Traversed 1000 
nodes with filter Filter(query=select [jcr:path], [jcr:score], * from [nt:base] 
as a where [jcr:primaryType] is not null and isdescendantnode(a, '/home') /* 
xpath: /jcr:root/home//element(*)[@jcr:primaryType] */, path=/home//*, 
property=[jcr:primaryType=[is not null]]); consider creating an index or 
changing the query
{noformat}

However, [later it 
reduces|https://github.com/apache/jackrabbit-oak/blob/b3e62e3467bf6433b5a419c2f371331f33e57820/oak-auth-external/src/main/java/org/apache/jackrabbit/oak/spi/security/authentication/external/impl/DefaultSyncHandler.java#L151]
 the result to authorizables which have a {{rep:externalId}}.

Since OAK-4301 there is an oak index for {{rep:externalId}}, so the query can 
be optimized by searching for anything with {{rep:externalId}} instead:
{code:java}
userManager.findAuthorizables("rep:externalId", null);
{code}




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4916) Add support for excluding commits to BackgroundObserver

2016-10-10 Thread Stefan Egli (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4916?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Egli updated OAK-4916:
-
Attachment: OAK-4916.patch

Attaching [^OAK-4916.patch] which implements the {{isExcluded}} subclass hook 
as well as the {{NOOP_CHANGED}} CommitInfo in BackgroundObserver as described, 
including test cases.

> Add support for excluding commits to BackgroundObserver
> ---
>
> Key: OAK-4916
> URL: https://issues.apache.org/jira/browse/OAK-4916
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: core
>Affects Versions: 1.5.11
>Reporter: Stefan Egli
>Assignee: Stefan Egli
> Fix For: 1.6
>
> Attachments: OAK-4916.patch
>
>
> As part of pre-filtering commits it would be useful to have support in the 
> BackgroundObserver (in general) that would allow to exclude certain commits 
> from being added to the (BackgroundObserver's) queue, thus keeping the queue 
> smaller. The actual filtering is up to subclasses.
> The suggested implementation is as follows:
> * a new method {{isExcluded}} is introduced which represents a subclass hook 
> for filtering
> * excluded commits are not added to the queue
> * when multiple commits are excluded subsequently, this is collapsed
> * the first non-excluded commit (ContentChange) added to the queue is marked 
> with the last non-excluded root state as the 'previous root'
> * downstream Observers are notified of the exclusion of a commit via a 
> special CommitInfo {{NOOP_CHANGE}}: this instructs it to exclude this change 
> while at the same time 'fast-forwarding' the root state to the new one.
> ** this extra token is one way of solving the problem that 
> {{Observer.contentChanged}} represents a diff between two states but does not 
> transport the 'from' state explicitly - that is implicitly taken from the 
> previous call to {{contentChanged}}. Thus using such a gap token 
> ({{NOOP_CHANGE}}) seems to be the only way to instruct Observers to skip a 
> change.
> To repeat: whoever extends BackgroundObserver with filtering must be aware of 
> the new {{NOOP_CHANGE}} token. Anyone not doing filtering will not get any 
> {{NOOP_CHANGE}} tokens though.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu resolved OAK-4917.
--
Resolution: Fixed

thanks [~marett]!
applied the patch at http://svn.apache.org/viewvc?rev=1764144=rev

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
>Assignee: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4917.patch
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> 

[jira] [Updated] (OAK-4913) Interrupt online revision cleanup on segment-tar

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4913:
---
Labels: management  (was: )

> Interrupt online revision cleanup on segment-tar
> 
>
> Key: OAK-4913
> URL: https://issues.apache.org/jira/browse/OAK-4913
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segment-tar
>Reporter: Alex Parvulescu
>Assignee: Michael Dürig
>  Labels: management
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4913.patch
>
>
> Sub task of OAK-4835 for the {{segment-tar}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4914) Interrupt online revision cleanup on segmentmk

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4914:
---
Labels: management  (was: )

> Interrupt online revision cleanup on segmentmk
> --
>
> Key: OAK-4914
> URL: https://issues.apache.org/jira/browse/OAK-4914
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segmentmk
>Reporter: Alex Parvulescu
>  Labels: management
>
> Sub task of OAK-4835 for the {{segmentmk}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4915) Interrupt online revision cleanup on documentmk

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4915:
---
Labels: management  (was: )

> Interrupt online revision cleanup on documentmk
> ---
>
> Key: OAK-4915
> URL: https://issues.apache.org/jira/browse/OAK-4915
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: documentmk
>Reporter: Alex Parvulescu
>  Labels: management
>
> Sub task of OAK-4835 for the {{document}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562671#comment-15562671
 ] 

Michael Dürig commented on OAK-4835:


Filed OAK-4919 for providing better feedback of ongoing gc.

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc, management, monitoring
> Fix For: 1.6, 1.5.13
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4835:
---
Labels: compaction gc management monitoring  (was: compaction gc)

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc, management, monitoring
> Fix For: 1.6, 1.5.13
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4919) Better feedback from method invocations on RevisionGCMBean

2016-10-10 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-4919?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562667#comment-15562667
 ] 

Michael Dürig commented on OAK-4919:


[~alex.parvulescu] FYI

> Better feedback from method invocations on RevisionGCMBean
> --
>
> Key: OAK-4919
> URL: https://issues.apache.org/jira/browse/OAK-4919
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Michael Dürig
>  Labels: monitoring
> Fix For: 1.5.13
>
>
> The methods to invoke and cancel revision gc return void. This is by design 
> as those calls are asynchronous. The idea is that 
> {{RevisionGC.getRevisionGCStatus()}} would return the current status of an 
> ongoing gc operation. However, currently that method only returns the status 
> of the asynchronous task that was fired off. It should instead be able to 
> convey back the real status of the underlying operation. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4919) Better feedback from method invocations on RevisionGCMBean

2016-10-10 Thread JIRA
Michael Dürig created OAK-4919:
--

 Summary: Better feedback from method invocations on RevisionGCMBean
 Key: OAK-4919
 URL: https://issues.apache.org/jira/browse/OAK-4919
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Michael Dürig
 Fix For: 1.5.13


The methods to invoke and cancel revision gc return void. This is by design as 
those calls are asynchronous. The idea is that 
{{RevisionGC.getRevisionGCStatus()}} would return the current status of an 
ongoing gc operation. However, currently that method only returns the status of 
the asynchronous task that was fired off. It should instead be able to convey 
back the real status of the underlying operation. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothee Maret updated OAK-4917:

Flags: Patch

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
>Assignee: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4917.patch
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> 

[jira] [Commented] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562611#comment-15562611
 ] 

Timothee Maret commented on OAK-4917:
-

[~alexparvulescu], [~frm], [~mduerig] could you review the patch ?

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
>Assignee: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4917.patch
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> 

[jira] [Updated] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothee Maret updated OAK-4917:

Attachment: OAK-4917.patch

Attaching a svn compatible patch otherwise available at 
https://github.com/tmaret/jackrabbit-oak/commit/bbe213e5fad7e32aca09aa6a225db6246ea80f10.patch
 

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
>Assignee: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4917.patch
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> 

[jira] [Created] (OAK-4918) Upgrade Oak dependency to 1.5.12

2016-10-10 Thread JIRA
Michael Dürig created OAK-4918:
--

 Summary: Upgrade Oak dependency to 1.5.12
 Key: OAK-4918
 URL: https://issues.apache.org/jira/browse/OAK-4918
 Project: Jackrabbit Oak
  Issue Type: Task
  Components: segment-tar
Reporter: Michael Dürig






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4913) Interrupt online revision cleanup on segment-tar

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4913:
---
Attachment: OAK-4913.patch

[^OAK-4913.patch]: patch for once we have upgrade our Oak dependency to 1.5.12

> Interrupt online revision cleanup on segment-tar
> 
>
> Key: OAK-4913
> URL: https://issues.apache.org/jira/browse/OAK-4913
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segment-tar
>Reporter: Alex Parvulescu
>Assignee: Michael Dürig
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4913.patch
>
>
> Sub task of OAK-4835 for the {{segment-tar}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothee Maret reassigned OAK-4917:
---

Assignee: Timothee Maret

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
>Assignee: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> 

[jira] [Commented] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562576#comment-15562576
 ] 

Timothee Maret commented on OAK-4917:
-

Discussing this with [~alexparvulescu], it seems this is expected and in fact 
the cold stdby code deal with it by re-trying to load in a loop with a delay. 
This looping behaviour is already implemented in the 
{{DefaultStandbySegmentReader}} [0]. However the 
{{DefaultStandbyReferencesReader}} does not contains the loop, causing the 
issue.


[0] 
https://github.com/apache/jackrabbit-oak/blob/066edc9eb5ef500339de0ebf7859e7ee9dd3ab4b/oak-segment-tar/src/main/java/org/apache/jackrabbit/oak/segment/standby/server/DefaultStandbySegmentReader.java

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> 

[jira] [Commented] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562564#comment-15562564
 ] 

Timothee Maret commented on OAK-4917:
-

Looking a bit further, both readers ({{DefaultStandbyHeadReader}} and 
{{DefaultStandbyReferencesReader}}) do go through the 
{{org.apache.jackrabbit.oak.segment.file.FileStore}} in order to fetch data.
However, both methods seem to use different caches.

The root cause of this issue seems to be those two cache not being in sync.
{{org.apache.jackrabbit.oak.segment.file.FileStore#getHead}} does use the 
CachingSegmentReader segment Reader.
{{org.apache.jackrabbit.oak.segment.file.FileStore#readSegment}} does use the 
SegmentCache segment cache in the FileStore.

> DefaultStandbyReferencesReader does not re-attempt to read segment upon 
> failure 
> 
>
> Key: OAK-4917
> URL: https://issues.apache.org/jira/browse/OAK-4917
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Timothee Maret
> Fix For: Segment Tar 0.0.16
>
>
> This following logs occurred while running integration testing.
> {code}
> 07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder 
> Sending head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client 
> qastandby1
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
> references' message
> 07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
> Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
> qastandby1
> 07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader
>  Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
> org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
> 9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
> at 
> org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
> at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
> at 
> org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
> at 
> org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
> at 
> org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
> at 
> io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
> at 
> io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
> at 
> 

[jira] [Updated] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothee Maret updated OAK-4917:

Description: 
This following logs occurred while running integration testing.

{code}
07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder Sending 
head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client qastandby1
07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
references' message
07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
qastandby1
07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader 
Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
at 
org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
at 
org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
at 
org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
at 
org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
at 
org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
at 
org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
at 
org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
at 
org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
at 
org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
at 
org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
org.apache.jackrabbit.oak.segment.standby.server.RequestObserverHandler.channelRead(RequestObserverHandler.java:53)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
at 
org.apache.jackrabbit.oak.segment.standby.server.StateHandler.channelRead(StateHandler.java:62)
at 

[jira] [Updated] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4917?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothee Maret updated OAK-4917:

Description: 
This following logs occurred while running integration testing.

{code}07.10.2016 16:50:30.882 *DEBUG* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.codec.GetHeadResponseEncoder Sending 
head 9d91bcd2-c4e0-4411-a0e0-d358fff02afc.0020 to client qastandby1
07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.codec.RequestDecoder Parsed 'get 
references' message
07.10.2016 16:50:30.885 *DEBUG* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler 
Reading references of segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc for client 
qastandby1
07.10.2016 16:50:30.886 *WARN* [nioEventLoopGroup-3-2] 
org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader 
Unable to read segment 9d91bcd2-c4e0-4411-a0e0-d358fff02afc
org.apache.jackrabbit.oak.segment.SegmentNotFoundException: Segment 
9d91bcd2-c4e0-4411-a0e0-d358fff02afc not found
at 
org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1364)
at 
org.apache.jackrabbit.oak.segment.file.FileStore$18.call(FileStore.java:1304)
at 
org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.load(CacheLIRS.java:1013)
at 
org.apache.jackrabbit.oak.cache.CacheLIRS$Segment.get(CacheLIRS.java:974)
at org.apache.jackrabbit.oak.cache.CacheLIRS.get(CacheLIRS.java:285)
at 
org.apache.jackrabbit.oak.segment.SegmentCache.getSegment(SegmentCache.java:92)
at 
org.apache.jackrabbit.oak.segment.file.FileStore.readSegment(FileStore.java:1304)
at 
org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readSegment(DefaultStandbyReferencesReader.java:66)
at 
org.apache.jackrabbit.oak.segment.standby.server.DefaultStandbyReferencesReader.readReferences(DefaultStandbyReferencesReader.java:49)
at 
org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:41)
at 
org.apache.jackrabbit.oak.segment.standby.server.GetReferencesRequestHandler.channelRead0(GetReferencesRequestHandler.java:27)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:108)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
org.apache.jackrabbit.oak.segment.standby.server.RequestObserverHandler.channelRead(RequestObserverHandler.java:53)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)
at 
io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)
at 
io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:345)
at 
io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
at 
org.apache.jackrabbit.oak.segment.standby.server.StateHandler.channelRead(StateHandler.java:62)
at 

[jira] [Commented] (OAK-4617) Align SegmentRevisionGC MBean with new generation based GC

2016-10-10 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-4617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562550#comment-15562550
 ] 

Michael Dürig commented on OAK-4617:


Moved the functionality that was so far provided by the {{GCMonitorMBean}} to 
the {{SegmentRevisionGCMBean}} and removed the former at 
http://svn.apache.org/viewvc?rev=1764117=rev

> Align SegmentRevisionGC MBean with new generation based GC
> --
>
> Key: OAK-4617
> URL: https://issues.apache.org/jira/browse/OAK-4617
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: segment-tar
>Reporter: Michael Dürig
>Assignee: Michael Dürig
>  Labels: production
> Fix For: Segment Tar 0.0.16
>
>
> The {{SegmentRevisionGC}} MBean still dates back to the old {{oak-segment}}. 
> We need to review its endpoints and only keep those that make sense for 
> {{oak-segment-tar}}, adapt the others as necessary any add further 
> functionality as required. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4917) DefaultStandbyReferencesReader does not re-attempt to read segment upon failure

2016-10-10 Thread Timothee Maret (JIRA)
Timothee Maret created OAK-4917:
---

 Summary: DefaultStandbyReferencesReader does not re-attempt to 
read segment upon failure 
 Key: OAK-4917
 URL: https://issues.apache.org/jira/browse/OAK-4917
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: segment-tar
Affects Versions: Segment Tar 0.0.14
Reporter: Timothee Maret
 Fix For: Segment Tar 0.0.16






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562546#comment-15562546
 ] 

Michael Dürig commented on OAK-4835:


New API for cancelling revision gc at 
http://svn.apache.org/viewvc?rev=1764115=rev

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc
> Fix For: 1.6, 1.5.13
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4911) Can not read node Property when move code into a Thread (Java)

2016-10-10 Thread amin zamani (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

amin zamani updated OAK-4911:
-
Summary: Can not read node Property when move code into a Thread (Java)  
(was: Can not read node Property in a Thread (Java))

> Can not read node Property when move code into a Thread (Java)
> --
>
> Key: OAK-4911
> URL: https://issues.apache.org/jira/browse/OAK-4911
> Project: Jackrabbit Oak
>  Issue Type: Bug
>Affects Versions: 1.3.10
> Environment: MAC OS X
>Reporter: amin zamani
> Attachments: java-code.txt
>
>
> Hallo,
> we develop an application and everything is working as it should. We upload 
> documents and for each document a new preview file (node) should be 
> generated. It works well when we execute the code synchron. But because of 
> the fact that the generation of a preview file (like PDF format) can take 
> very long time we decided to move the preview generation code into a usual 
> java thread so that after the user is upload a document the website is 
> responding very quick and does not wait till the preview file is generated 
> but the preview file is generated parallel. 
> No the problem: As soon as I move the same code regarding to the preview file 
> generation into a usual thread (no modifications to the logic, only a thread 
> is bordered to it) suddenly the node path does not exist, this is the error:
> -
> Caused by: javax.jcr.PathNotFoundException: jcr:lastModifiedBy not found on 
> /jcr:system/jcr:versionStorage/7e/f8/5b/7ef85b25-4598-4476-82df-446eb3a08a90/1.0/jcr:frozenNode/jcr:content
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:631)
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:625)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207)
>   at 
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.getProperty(NodeImpl.java:625)
>   at 
> com.westernacher.noah.util.content_repository.JcrUtil.getStringProperty(JcrUtil.java:35)
> ---
> In my point of view this is a bug. This is the code that works:
> Example:
> /// 1) User Upload document through browser in our web app..
> // 2) ... document uploaded and saved in OAK CR
> // 3) Now generate the preview:
> updateDocumentPreview(documentId);
> 
> Now the same in a thread that does not work:
> => I have only moved the method "updateDocumentPreview(documentId);" in a 
> Thread (Java 8):
> //Same code as before except the last line replaced by following lines:
> Runnable run = ()-> {updateDocumentPreview(documentId);}
> new Thread(run).start(); //Start the thread to generate a document preview
> --



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4908) Best-effort prefiltering in ChangeProcessor based on ChangeSet

2016-10-10 Thread Stefan Egli (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Egli updated OAK-4908:
-
Description: 
This is a subtask as a result of 
[discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
 around design in OAK-4796:

Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
ChangeProcessor should do a best-effort prefiltering of commits before they get 
added to the (BackgroundObserver's) queue.

This consists of the following parts:
* -the support for optionally excluding commits from being added to the queue 
in the BackgroundObserver- EDIT: factored that out into OAK-4916
* -the BackgroundObserver signaling downstream Observers that a change should 
be excluded via a {{NOOP_CHANGE}} CommitInfo- EDIT: factored that out into 
OAK-4916
* the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
best-effort prefiltering - and handling the {{NOOP_CHANGED}} CommitInfo 
introduced in OAK-4916


  was:
This is a subtask as a result of 
[discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
 around design in OAK-4796:

Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
ChangeProcessor should do a best-effort prefiltering of commits before they get 
added to the (BackgroundObserver's) queue.

This consists of the following parts:
* -the support for optionally excluding commits from being added to the queue 
in the BackgroundObserver- EDIT: factored that out into OAK-4916
* the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
best-effort prefiltering
* the BackgroundObserver signaling downstream Observers that a change should be 
excluded via a {{NOOP_CHANGE}} CommitInfo



> Best-effort prefiltering in ChangeProcessor based on ChangeSet
> --
>
> Key: OAK-4908
> URL: https://issues.apache.org/jira/browse/OAK-4908
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: core, jcr
>Affects Versions: 1.5.11
>Reporter: Stefan Egli
>Assignee: Stefan Egli
> Fix For: 1.6
>
>
> This is a subtask as a result of 
> [discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
>  around design in OAK-4796:
> Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
> ChangeProcessor should do a best-effort prefiltering of commits before they 
> get added to the (BackgroundObserver's) queue.
> This consists of the following parts:
> * -the support for optionally excluding commits from being added to the queue 
> in the BackgroundObserver- EDIT: factored that out into OAK-4916
> * -the BackgroundObserver signaling downstream Observers that a change should 
> be excluded via a {{NOOP_CHANGE}} CommitInfo- EDIT: factored that out into 
> OAK-4916
> * the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
> best-effort prefiltering - and handling the {{NOOP_CHANGED}} CommitInfo 
> introduced in OAK-4916



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Assigned] (OAK-4913) Interrupt online revision cleanup on segment-tar

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4913?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig reassigned OAK-4913:
--

Assignee: Michael Dürig

> Interrupt online revision cleanup on segment-tar
> 
>
> Key: OAK-4913
> URL: https://issues.apache.org/jira/browse/OAK-4913
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segment-tar
>Reporter: Alex Parvulescu
>Assignee: Michael Dürig
> Fix For: Segment Tar 0.0.16
>
>
> Sub task of OAK-4835 for the {{segment-tar}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4835:
---
Fix Version/s: (was: Segment Tar 0.0.16)
   1.6
   1.5.13

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc
> Fix For: 1.6, 1.5.13
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4835:
---
Component/s: (was: segment-tar)
 (was: documentmk)

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc
> Fix For: Segment Tar 0.0.16
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-4796) filter events before adding to ChangeProcessor's queue

2016-10-10 Thread Stefan Egli (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561548#comment-15561548
 ] 

Stefan Egli edited comment on OAK-4796 at 10/10/16 1:52 PM:


split up this task into 3 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4916 : add filter capability to BackgroundObserver - thus introduce 
{{NOOP_CHANGE}}
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering


was (Author: egli):
split up this task into 3 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4916 : add filter capability to BackgroundObserver - thus introduce 
{{NOOP_CHANGED}}
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering

> filter events before adding to ChangeProcessor's queue
> --
>
> Key: OAK-4796
> URL: https://issues.apache.org/jira/browse/OAK-4796
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: jcr
>Affects Versions: 1.5.9
>Reporter: Stefan Egli
>Assignee: Stefan Egli
>  Labels: observation
> Fix For: 1.6
>
> Attachments: OAK-4796.changeSet.patch, OAK-4796.patch
>
>
> Currently the 
> [ChangeProcessor.contentChanged|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L335]
>  is in charge of doing the event diffing and filtering and does so in a 
> pooled Thread, ie asynchronously, at a later stage independent from the 
> commit. This has the advantage that the commit is fast, but has the following 
> potentially negative effects:
> # events (in the form of ContentChange Objects) occupy a slot of the queue 
> even if the listener is not interested in it - any commit lands on any 
> listener's queue. This reduces the capacity of the queue for 'actual' events 
> to be delivered. It therefore increases the risk that the queue fills - and 
> when full has various consequences such as loosing the CommitInfo etc.
> # each event==ContentChange later on must be evaluated, and for that a diff 
> must be calculated. Depending on runtime behavior that diff might be 
> expensive if no longer in the cache (documentMk specifically).
> As an improvement, this diffing+filtering could be done at an earlier stage 
> already, nearer to the commit, and in case the filter would ignore the event, 
> it would not have to be put into the queue at all, thus avoiding occupying a 
> slot and later potentially slower diffing.
> The suggestion is to implement this via the following algorithm:
> * During the commit, in a {{Validator}} the listener's filters are evaluated 
> - in an as-efficient-as-possible manner (Reason for doing it in a Validator 
> is that this doesn't add overhead as oak already goes through all changes for 
> other Validators). As a result a _list of potentially affected observers_ is 
> added to the {{CommitInfo}} (false positives are fine).
> ** Note that the above adds cost to the commit and must therefore be 
> carefully done and measured
> ** One potential measure could be to only do filtering when listener's queues 
> are larger than a certain threshold (eg 10)
> * The ChangeProcessor in {{contentChanged}} (in the one created in 
> [createObserver|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L224])
>  then checks the new commitInfo's _potentially affected observers_ list and 
> if it's not in the list, adds a {{NOOP}} token at the end of the queue. If 
> there's already a NOOP there, the two are collapsed (this way when a filter 
> is not affected it would have a NOOP at the end of the queue). If later on a 
> no-NOOP item is added, the NOOP's {{root}} is used as the {{previousRoot}} 
> for the newly added {{ContentChange}} obj.
> ** To achieve that, the ContentChange obj is extended to not only have the 
> "to" {{root}} pointer, but also the "from" {{previousRoot}} pointer which 
> currently is implicitly maintained.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-4796) filter events before adding to ChangeProcessor's queue

2016-10-10 Thread Stefan Egli (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561548#comment-15561548
 ] 

Stefan Egli edited comment on OAK-4796 at 10/10/16 1:51 PM:


split up this task into 3 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4916 : add filter capability to BackgroundObserver - thus introduce 
{{NOOP_CHANGED}}
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering


was (Author: egli):
split up this task into 2 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4916 : add filter capability to BackgroundObserver - thus introduce 
{{NOOP_CHANGED}}
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering

> filter events before adding to ChangeProcessor's queue
> --
>
> Key: OAK-4796
> URL: https://issues.apache.org/jira/browse/OAK-4796
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: jcr
>Affects Versions: 1.5.9
>Reporter: Stefan Egli
>Assignee: Stefan Egli
>  Labels: observation
> Fix For: 1.6
>
> Attachments: OAK-4796.changeSet.patch, OAK-4796.patch
>
>
> Currently the 
> [ChangeProcessor.contentChanged|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L335]
>  is in charge of doing the event diffing and filtering and does so in a 
> pooled Thread, ie asynchronously, at a later stage independent from the 
> commit. This has the advantage that the commit is fast, but has the following 
> potentially negative effects:
> # events (in the form of ContentChange Objects) occupy a slot of the queue 
> even if the listener is not interested in it - any commit lands on any 
> listener's queue. This reduces the capacity of the queue for 'actual' events 
> to be delivered. It therefore increases the risk that the queue fills - and 
> when full has various consequences such as loosing the CommitInfo etc.
> # each event==ContentChange later on must be evaluated, and for that a diff 
> must be calculated. Depending on runtime behavior that diff might be 
> expensive if no longer in the cache (documentMk specifically).
> As an improvement, this diffing+filtering could be done at an earlier stage 
> already, nearer to the commit, and in case the filter would ignore the event, 
> it would not have to be put into the queue at all, thus avoiding occupying a 
> slot and later potentially slower diffing.
> The suggestion is to implement this via the following algorithm:
> * During the commit, in a {{Validator}} the listener's filters are evaluated 
> - in an as-efficient-as-possible manner (Reason for doing it in a Validator 
> is that this doesn't add overhead as oak already goes through all changes for 
> other Validators). As a result a _list of potentially affected observers_ is 
> added to the {{CommitInfo}} (false positives are fine).
> ** Note that the above adds cost to the commit and must therefore be 
> carefully done and measured
> ** One potential measure could be to only do filtering when listener's queues 
> are larger than a certain threshold (eg 10)
> * The ChangeProcessor in {{contentChanged}} (in the one created in 
> [createObserver|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L224])
>  then checks the new commitInfo's _potentially affected observers_ list and 
> if it's not in the list, adds a {{NOOP}} token at the end of the queue. If 
> there's already a NOOP there, the two are collapsed (this way when a filter 
> is not affected it would have a NOOP at the end of the queue). If later on a 
> no-NOOP item is added, the NOOP's {{root}} is used as the {{previousRoot}} 
> for the newly added {{ContentChange}} obj.
> ** To achieve that, the ContentChange obj is extended to not only have the 
> "to" {{root}} pointer, but also the "from" {{previousRoot}} pointer which 
> currently is implicitly maintained.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Comment Edited] (OAK-4796) filter events before adding to ChangeProcessor's queue

2016-10-10 Thread Stefan Egli (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561548#comment-15561548
 ] 

Stefan Egli edited comment on OAK-4796 at 10/10/16 1:51 PM:


split up this task into 2 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4916 : add filter capability to BackgroundObserver - thus introduce 
{{NOOP_CHANGED}}
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering


was (Author: egli):
split up this task into 2 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering

> filter events before adding to ChangeProcessor's queue
> --
>
> Key: OAK-4796
> URL: https://issues.apache.org/jira/browse/OAK-4796
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: jcr
>Affects Versions: 1.5.9
>Reporter: Stefan Egli
>Assignee: Stefan Egli
>  Labels: observation
> Fix For: 1.6
>
> Attachments: OAK-4796.changeSet.patch, OAK-4796.patch
>
>
> Currently the 
> [ChangeProcessor.contentChanged|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L335]
>  is in charge of doing the event diffing and filtering and does so in a 
> pooled Thread, ie asynchronously, at a later stage independent from the 
> commit. This has the advantage that the commit is fast, but has the following 
> potentially negative effects:
> # events (in the form of ContentChange Objects) occupy a slot of the queue 
> even if the listener is not interested in it - any commit lands on any 
> listener's queue. This reduces the capacity of the queue for 'actual' events 
> to be delivered. It therefore increases the risk that the queue fills - and 
> when full has various consequences such as loosing the CommitInfo etc.
> # each event==ContentChange later on must be evaluated, and for that a diff 
> must be calculated. Depending on runtime behavior that diff might be 
> expensive if no longer in the cache (documentMk specifically).
> As an improvement, this diffing+filtering could be done at an earlier stage 
> already, nearer to the commit, and in case the filter would ignore the event, 
> it would not have to be put into the queue at all, thus avoiding occupying a 
> slot and later potentially slower diffing.
> The suggestion is to implement this via the following algorithm:
> * During the commit, in a {{Validator}} the listener's filters are evaluated 
> - in an as-efficient-as-possible manner (Reason for doing it in a Validator 
> is that this doesn't add overhead as oak already goes through all changes for 
> other Validators). As a result a _list of potentially affected observers_ is 
> added to the {{CommitInfo}} (false positives are fine).
> ** Note that the above adds cost to the commit and must therefore be 
> carefully done and measured
> ** One potential measure could be to only do filtering when listener's queues 
> are larger than a certain threshold (eg 10)
> * The ChangeProcessor in {{contentChanged}} (in the one created in 
> [createObserver|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L224])
>  then checks the new commitInfo's _potentially affected observers_ list and 
> if it's not in the list, adds a {{NOOP}} token at the end of the queue. If 
> there's already a NOOP there, the two are collapsed (this way when a filter 
> is not affected it would have a NOOP at the end of the queue). If later on a 
> no-NOOP item is added, the NOOP's {{root}} is used as the {{previousRoot}} 
> for the newly added {{ContentChange}} obj.
> ** To achieve that, the ContentChange obj is extended to not only have the 
> "to" {{root}} pointer, but also the "from" {{previousRoot}} pointer which 
> currently is implicitly maintained.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4908) Best-effort prefiltering in ChangeProcessor based on ChangeSet

2016-10-10 Thread Stefan Egli (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4908?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Egli updated OAK-4908:
-
Description: 
This is a subtask as a result of 
[discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
 around design in OAK-4796:

Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
ChangeProcessor should do a best-effort prefiltering of commits before they get 
added to the (BackgroundObserver's) queue.

This consists of the following parts:
* -the support for optionally excluding commits from being added to the queue 
in the BackgroundObserver- EDIT: factored that out into OAK-4916
* the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
best-effort prefiltering
* the BackgroundObserver signaling downstream Observers that a change should be 
excluded via a {{NOOP_CHANGE}} CommitInfo


  was:
This is a subtask as a result of 
[discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
 around design in OAK-4796:

Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
ChangeProcessor should do a best-effort prefiltering of commits before they get 
added to the (BackgroundObserver's) queue.

This consists of the following parts:
* the support for optionally excluding commits from being added to the queue in 
the BackgroundObserver
* the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
best-effort prefiltering
* the BackgroundObserver signaling downstream Observers that a change should be 
excluded via a {{NOOP_CHANGE}} CommitInfo



> Best-effort prefiltering in ChangeProcessor based on ChangeSet
> --
>
> Key: OAK-4908
> URL: https://issues.apache.org/jira/browse/OAK-4908
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: core, jcr
>Affects Versions: 1.5.11
>Reporter: Stefan Egli
>Assignee: Stefan Egli
> Fix For: 1.6
>
>
> This is a subtask as a result of 
> [discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
>  around design in OAK-4796:
> Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
> ChangeProcessor should do a best-effort prefiltering of commits before they 
> get added to the (BackgroundObserver's) queue.
> This consists of the following parts:
> * -the support for optionally excluding commits from being added to the queue 
> in the BackgroundObserver- EDIT: factored that out into OAK-4916
> * the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
> best-effort prefiltering
> * the BackgroundObserver signaling downstream Observers that a change should 
> be excluded via a {{NOOP_CHANGE}} CommitInfo



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4916) Add support for excluding commits to BackgroundObserver

2016-10-10 Thread Stefan Egli (JIRA)
Stefan Egli created OAK-4916:


 Summary: Add support for excluding commits to BackgroundObserver
 Key: OAK-4916
 URL: https://issues.apache.org/jira/browse/OAK-4916
 Project: Jackrabbit Oak
  Issue Type: Technical task
  Components: core
Affects Versions: 1.5.11
Reporter: Stefan Egli
Assignee: Stefan Egli
 Fix For: 1.6


As part of pre-filtering commits it would be useful to have support in the 
BackgroundObserver (in general) that would allow to exclude certain commits 
from being added to the (BackgroundObserver's) queue, thus keeping the queue 
smaller. The actual filtering is up to subclasses.

The suggested implementation is as follows:
* a new method {{isExcluded}} is introduced which represents a subclass hook 
for filtering
* excluded commits are not added to the queue
* when multiple commits are excluded subsequently, this is collapsed
* the first non-excluded commit (ContentChange) added to the queue is marked 
with the last non-excluded root state as the 'previous root'
* downstream Observers are notified of the exclusion of a commit via a special 
CommitInfo {{NOOP_CHANGE}}: this instructs it to exclude this change while at 
the same time 'fast-forwarding' the root state to the new one.
** this extra token is one way of solving the problem that 
{{Observer.contentChanged}} represents a diff between two states but does not 
transport the 'from' state explicitly - that is implicitly taken from the 
previous call to {{contentChanged}}. Thus using such a gap token 
({{NOOP_CHANGE}}) seems to be the only way to instruct Observers to skip a 
change.

To repeat: whoever extends BackgroundObserver with filtering must be aware of 
the new {{NOOP_CHANGE}} token. Anyone not doing filtering will not get any 
{{NOOP_CHANGE}} tokens though.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4915) Interrupt online revision cleanup on documentmk

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4915:
-
Component/s: (was: segmentmk)
 documentmk

> Interrupt online revision cleanup on documentmk
> ---
>
> Key: OAK-4915
> URL: https://issues.apache.org/jira/browse/OAK-4915
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: documentmk
>Reporter: Alex Parvulescu
>
> Sub task of OAK-4835 for the {{segmentmk}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4915) Interrupt online revision cleanup on documentmk

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4915:
-
Description: Sub task of OAK-4835 for the {{document}} specific changes  
(was: Sub task of OAK-4835 for the {{segmentmk}} specific changes)

> Interrupt online revision cleanup on documentmk
> ---
>
> Key: OAK-4915
> URL: https://issues.apache.org/jira/browse/OAK-4915
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: documentmk
>Reporter: Alex Parvulescu
>
> Sub task of OAK-4835 for the {{document}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4915) Interrupt online revision cleanup on documentmk

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4915?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4915:
-
Fix Version/s: (was: Segment Tar 0.0.16)

> Interrupt online revision cleanup on documentmk
> ---
>
> Key: OAK-4915
> URL: https://issues.apache.org/jira/browse/OAK-4915
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: documentmk
>Reporter: Alex Parvulescu
>
> Sub task of OAK-4835 for the {{segmentmk}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4915) Interrupt online revision cleanup on documentmk

2016-10-10 Thread Alex Parvulescu (JIRA)
Alex Parvulescu created OAK-4915:


 Summary: Interrupt online revision cleanup on documentmk
 Key: OAK-4915
 URL: https://issues.apache.org/jira/browse/OAK-4915
 Project: Jackrabbit Oak
  Issue Type: Technical task
  Components: segmentmk
Reporter: Alex Parvulescu


Sub task of OAK-4835 for the {{segmentmk}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4907) Collect changes (paths, nts, props..) of a commit in a validator

2016-10-10 Thread Stefan Egli (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4907?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Egli updated OAK-4907:
-
Attachment: OAK-4907.patch

Attaching [^OAK-4907.patch] which contains mainly:
* ChangeSet : the data object holding actual items changed (paths, names, 
types, properties)
* ChangeCollectorProvider: a type ValidationProvider that can be hooked into 
Oak to have above ChangeSets be generated and stored in CommitContexts

> Collect changes (paths, nts, props..) of a commit in a validator
> 
>
> Key: OAK-4907
> URL: https://issues.apache.org/jira/browse/OAK-4907
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: core
>Affects Versions: 1.5.11
>Reporter: Stefan Egli
>Assignee: Stefan Egli
> Fix For: 1.6
>
> Attachments: OAK-4907.patch
>
>
> It would be useful to collect a set of changes of a commit (eg in a 
> validator) that could later be used in an Observer for eg prefiltering.
> Such a change collector should collect paths, nodetypes, properties, 
> node-names (and perhaps more at a later stage) of all changes and store the 
> result in the CommitInfo's CommitContext.
> Note that this is a result of 
> [discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
>  around design in OAK-4796



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4914) Interrupt online revision cleanup on segmentmk

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4914:
-
Fix Version/s: (was: Segment Tar 0.0.16)
  Description: Sub task of OAK-4835 for the {{segmentmk}} specific changes  
(was: Sub task of OAK-4835 for the {{segment-tar}} specific changes)

> Interrupt online revision cleanup on segmentmk
> --
>
> Key: OAK-4914
> URL: https://issues.apache.org/jira/browse/OAK-4914
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segmentmk
>Reporter: Alex Parvulescu
>
> Sub task of OAK-4835 for the {{segmentmk}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4914) Interrupt online revision cleanup on segmentmk

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4914:
-
Component/s: (was: segment-tar)
 segmentmk

> Interrupt online revision cleanup on segmentmk
> --
>
> Key: OAK-4914
> URL: https://issues.apache.org/jira/browse/OAK-4914
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segmentmk
>Reporter: Alex Parvulescu
>
> Sub task of OAK-4835 for the {{segmentmk}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4913) Interrupt online revision cleanup on segment-tar

2016-10-10 Thread Alex Parvulescu (JIRA)
Alex Parvulescu created OAK-4913:


 Summary: Interrupt online revision cleanup on segment-tar
 Key: OAK-4913
 URL: https://issues.apache.org/jira/browse/OAK-4913
 Project: Jackrabbit Oak
  Issue Type: Technical task
  Components: segment-tar
Reporter: Alex Parvulescu


Sub task of OAK-4835 for the {{segment-tar}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4914) Interrupt online revision cleanup on segmentmk

2016-10-10 Thread Alex Parvulescu (JIRA)
Alex Parvulescu created OAK-4914:


 Summary: Interrupt online revision cleanup on segmentmk
 Key: OAK-4914
 URL: https://issues.apache.org/jira/browse/OAK-4914
 Project: Jackrabbit Oak
  Issue Type: Technical task
  Components: segment-tar
Reporter: Alex Parvulescu
 Fix For: Segment Tar 0.0.16


Sub task of OAK-4835 for the {{segment-tar}} specific changes



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4912) MongoDB: ReadPreferenceIT.testMongoReadPreferencesForLocalChanges() ocasionally fails

2016-10-10 Thread Julian Reschke (JIRA)
Julian Reschke created OAK-4912:
---

 Summary: MongoDB: 
ReadPreferenceIT.testMongoReadPreferencesForLocalChanges() ocasionally fails
 Key: OAK-4912
 URL: https://issues.apache.org/jira/browse/OAK-4912
 Project: Jackrabbit Oak
  Issue Type: Bug
Reporter: Julian Reschke
Priority: Minor


{noformat}
testMongoReadPreferencesForLocalChanges(org.apache.jackrabbit.oak.plugins.document.mongo.ReadPreferenceIT)
  Time elapsed: 0.024 sec  <<< FAILURE!
java.lang.AssertionError: expected: but was:
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:834)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
at 
org.apache.jackrabbit.oak.plugins.document.mongo.ReadPreferenceIT.testMongoReadPreferencesForLocalChanges(ReadPreferenceIT.java:195)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4835:
---
Component/s: (was: segmentmk)
 segment-tar

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, documentmk, segment-tar
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc
> Fix For: Segment Tar 0.0.16
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-4910) Update segment tar to 0.0.14

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4910?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig resolved OAK-4910.

Resolution: Fixed

Fixed at http://svn.apache.org/viewvc?rev=1764069=rev

> Update segment tar to 0.0.14
> 
>
> Key: OAK-4910
> URL: https://issues.apache.org/jira/browse/OAK-4910
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, segment-tar
>Reporter: Davide Giannella
>Assignee: Michael Dürig
>Priority: Blocker
> Fix For: 1.6, 1.5.12
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4911) Can not read node Property in a Thread (Java)

2016-10-10 Thread amin zamani (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4911?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

amin zamani updated OAK-4911:
-
Attachment: java-code.txt

I also have attached the important parts of the code as you can see. The error 
is thrown in the "toDocument" method were access to the property 
"lastModifiedBy" is not working for example.

Any ideas? Thank you very much for your help!

Best regards,
Amin Zamani

> Can not read node Property in a Thread (Java)
> -
>
> Key: OAK-4911
> URL: https://issues.apache.org/jira/browse/OAK-4911
> Project: Jackrabbit Oak
>  Issue Type: Bug
>Affects Versions: 1.3.10
> Environment: MAC OS X
>Reporter: amin zamani
> Attachments: java-code.txt
>
>
> Hallo,
> we develop an application and everything is working as it should. We upload 
> documents and for each document a new preview file (node) should be 
> generated. It works well when we execute the code synchron. But because of 
> the fact that the generation of a preview file (like PDF format) can take 
> very long time we decided to move the preview generation code into a usual 
> java thread so that after the user is upload a document the website is 
> responding very quick and does not wait till the preview file is generated 
> but the preview file is generated parallel. 
> No the problem: As soon as I move the same code regarding to the preview file 
> generation into a usual thread (no modifications to the logic, only a thread 
> is bordered to it) suddenly the node path does not exist, this is the error:
> -
> Caused by: javax.jcr.PathNotFoundException: jcr:lastModifiedBy not found on 
> /jcr:system/jcr:versionStorage/7e/f8/5b/7ef85b25-4598-4476-82df-446eb3a08a90/1.0/jcr:frozenNode/jcr:content
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:631)
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:625)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207)
>   at 
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.getProperty(NodeImpl.java:625)
>   at 
> com.westernacher.noah.util.content_repository.JcrUtil.getStringProperty(JcrUtil.java:35)
> ---
> In my point of view this is a bug. This is the code that works:
> Example:
> /// 1) User Upload document through browser in our web app..
> // 2) ... document uploaded and saved in OAK CR
> // 3) Now generate the preview:
> updateDocumentPreview(documentId);
> 
> Now the same in a thread that does not work:
> => I have only moved the method "updateDocumentPreview(documentId);" in a 
> Thread (Java 8):
> //Same code as before except the last line replaced by following lines:
> Runnable run = ()-> {updateDocumentPreview(documentId);}
> new Thread(run).start(); //Start the thread to generate a document preview
> --



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4911) Can not read node Property in a Thread (Java)

2016-10-10 Thread amin zamani (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4911?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562053#comment-15562053
 ] 

amin zamani commented on OAK-4911:
--

Here some information of implementation of the method for updating the node - 
but as mentioned before, it is doing nothing different but is only called in a 
thread - it only writes an input stream of a file into the preview node in oak, 
nothing more and then returns deep inside of it some properties of the node :
void updateDocumentPreview(String originalDocumentId){
//Get inputstream  of the preview (preview file is in local directory of OS)
//Now save the preview file content into oak:
//Call of content update method:
updateDocumentContent(previewNodeIdToUpdate, InputStream);

}

And this is the implementation of the method with the input stream of the 
preview file:

 public Document updateDocumentContent(String documentId, InputStream 
fileContents) {
try {
Binary binary = 
jcrSession.getValueFactory().createBinary(fileContents);
try {
Node file = jcrSession.getNodeByIdentifier(documentId);
Version updatedVersion = versionFile(file, binary);

return toDocument(updatedVersion);
} finally {
binary.dispose();
}
} catch (Exception e) {
throw new RuntimeItemNotFoundException(e);
} 
}


 => The exception is thrown in the method toDocument(updatedVersion)

First, This is the implementation of the "versionFile(file, binary)" method:

 private Version versionFile(Node file, Binary fileContent) {
try {
VersionManager versionManager = 
file.getSession().getWorkspace().getVersionManager();

versionManager.checkout(file.getPath());

file.getNode(Property.JCR_CONTENT).setProperty(Property.JCR_LAST_MODIFIED, 
Calendar.getInstance());

file.getNode(Property.JCR_CONTENT).setProperty(Property.JCR_LAST_MODIFIED_BY, 
SecurityUtil.getCurrentUserLogin());
file.getNode(Property.JCR_CONTENT).setProperty(Property.JCR_DATA, 
fileContent);

jcrSession.save();
Version version = versionManager.checkin(file.getPath());


versionManager.getVersionHistory(file.getPath()).addVersionLabel(version.getName(),
 NOAH_LAST_VERSION_LABEL, DO_MOVE_LABEL);

return version;
} catch (RepositoryException e) {
throw new RuntimeRepositoryException(e);
}
}





> Can not read node Property in a Thread (Java)
> -
>
> Key: OAK-4911
> URL: https://issues.apache.org/jira/browse/OAK-4911
> Project: Jackrabbit Oak
>  Issue Type: Bug
>Affects Versions: 1.3.10
> Environment: MAC OS X
>Reporter: amin zamani
>
> Hallo,
> we develop an application and everything is working as it should. We upload 
> documents and for each document a new preview file (node) should be 
> generated. It works well when we execute the code synchron. But because of 
> the fact that the generation of a preview file (like PDF format) can take 
> very long time we decided to move the preview generation code into a usual 
> java thread so that after the user is upload a document the website is 
> responding very quick and does not wait till the preview file is generated 
> but the preview file is generated parallel. 
> No the problem: As soon as I move the same code regarding to the preview file 
> generation into a usual thread (no modifications to the logic, only a thread 
> is bordered to it) suddenly the node path does not exist, this is the error:
> -
> Caused by: javax.jcr.PathNotFoundException: jcr:lastModifiedBy not found on 
> /jcr:system/jcr:versionStorage/7e/f8/5b/7ef85b25-4598-4476-82df-446eb3a08a90/1.0/jcr:frozenNode/jcr:content
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:631)
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:625)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207)
>   at 
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
>   at 
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.getProperty(NodeImpl.java:625)
>   at 
> com.westernacher.noah.util.content_repository.JcrUtil.getStringProperty(JcrUtil.java:35)
> ---
> In my point of view this is a bug. This is the code that works:
> Example:
> /// 1) User Upload document through browser in our web app..
> // 2) ... document uploaded and saved in OAK CR
> // 3) Now generate the preview:
> updateDocumentPreview(documentId);
> 
> Now the same in a thread that does not work:
> => I have only moved the method 

[jira] [Commented] (OAK-4889) Update Oak trunk to Jackrabbit 2.13.4

2016-10-10 Thread Julian Reschke (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4889?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15562044#comment-15562044
 ] 

Julian Reschke commented on OAK-4889:
-

trunk: [r1764061|http://svn.apache.org/r1764061]

> Update Oak trunk to Jackrabbit 2.13.4
> -
>
> Key: OAK-4889
> URL: https://issues.apache.org/jira/browse/OAK-4889
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: parent
>Affects Versions: 1.5.11
>Reporter: Julian Reschke
>Assignee: Julian Reschke
>Priority: Trivial
> Fix For: 1.5.12
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-4889) Update Oak trunk to Jackrabbit 2.13.4

2016-10-10 Thread Julian Reschke (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Reschke resolved OAK-4889.
-
Resolution: Fixed

> Update Oak trunk to Jackrabbit 2.13.4
> -
>
> Key: OAK-4889
> URL: https://issues.apache.org/jira/browse/OAK-4889
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: parent
>Affects Versions: 1.5.11
>Reporter: Julian Reschke
>Assignee: Julian Reschke
>Priority: Trivial
> Fix For: 1.5.12
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4889) Update Oak trunk to Jackrabbit 2.13.4

2016-10-10 Thread Julian Reschke (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4889?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Reschke updated OAK-4889:

Fix Version/s: 1.5.12

> Update Oak trunk to Jackrabbit 2.13.4
> -
>
> Key: OAK-4889
> URL: https://issues.apache.org/jira/browse/OAK-4889
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: parent
>Affects Versions: 1.5.11
>Reporter: Julian Reschke
>Assignee: Julian Reschke
>Priority: Trivial
> Fix For: 1.5.12
>
>




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

 [ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Dürig updated OAK-4835:
---
Fix Version/s: Segment Tar 0.0.16

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, documentmk, segmentmk
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc
> Fix For: Segment Tar 0.0.16
>
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4911) Can not read node Property in a Thread (Java)

2016-10-10 Thread amin zamani (JIRA)
amin zamani created OAK-4911:


 Summary: Can not read node Property in a Thread (Java)
 Key: OAK-4911
 URL: https://issues.apache.org/jira/browse/OAK-4911
 Project: Jackrabbit Oak
  Issue Type: Bug
Affects Versions: 1.3.10
 Environment: MAC OS X
Reporter: amin zamani


Hallo,

we develop an application and everything is working as it should. We upload 
documents and for each document a new preview file (node) should be generated. 
It works well when we execute the code synchron. But because of the fact that 
the generation of a preview file (like PDF format) can take very long time we 
decided to move the preview generation code into a usual java thread so that 
after the user is upload a document the website is responding very quick and 
does not wait till the preview file is generated but the preview file is 
generated parallel. 

No the problem: As soon as I move the same code regarding to the preview file 
generation into a usual thread (no modifications to the logic, only a thread is 
bordered to it) suddenly the node path does not exist, this is the error:

-
Caused by: javax.jcr.PathNotFoundException: jcr:lastModifiedBy not found on 
/jcr:system/jcr:versionStorage/7e/f8/5b/7ef85b25-4598-4476-82df-446eb3a08a90/1.0/jcr:frozenNode/jcr:content
at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:631)
at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl$11.perform(NodeImpl.java:625)
at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207)
at 
org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
at 
org.apache.jackrabbit.oak.jcr.session.NodeImpl.getProperty(NodeImpl.java:625)
at 
com.westernacher.noah.util.content_repository.JcrUtil.getStringProperty(JcrUtil.java:35)
---


In my point of view this is a bug. This is the code that works:

Example:
/// 1) User Upload document through browser in our web app..
// 2) ... document uploaded and saved in OAK CR
// 3) Now generate the preview:
updateDocumentPreview(documentId);


Now the same in a thread that does not work:
=> I have only moved the method "updateDocumentPreview(documentId);" in a 
Thread (Java 8):
//Same code as before except the last line replaced by following lines:
Runnable run = ()-> {updateDocumentPreview(documentId);}
new Thread(run).start(); //Start the thread to generate a document preview
--



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4617) Align SegmentRevisionGC MBean with new generation based GC

2016-10-10 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-4617?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561888#comment-15561888
 ] 

Michael Dürig commented on OAK-4617:


See http://markmail.org/message/pjb6psc46p2thd76 for my proposal for an initial 
step.

> Align SegmentRevisionGC MBean with new generation based GC
> --
>
> Key: OAK-4617
> URL: https://issues.apache.org/jira/browse/OAK-4617
> Project: Jackrabbit Oak
>  Issue Type: Task
>  Components: segment-tar
>Reporter: Michael Dürig
>Assignee: Michael Dürig
>  Labels: production
> Fix For: Segment Tar 0.0.16
>
>
> The {{SegmentRevisionGC}} MBean still dates back to the old {{oak-segment}}. 
> We need to review its endpoints and only keep those that make sense for 
> {{oak-segment-tar}}, adapt the others as necessary any add further 
> functionality as required. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4835) Provide generic option to interrupt online revision cleanup

2016-10-10 Thread JIRA

[ 
https://issues.apache.org/jira/browse/OAK-4835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561887#comment-15561887
 ] 

Michael Dürig commented on OAK-4835:


See http://markmail.org/message/pjb6psc46p2thd76 for my proposal

> Provide generic option to interrupt online revision cleanup
> ---
>
> Key: OAK-4835
> URL: https://issues.apache.org/jira/browse/OAK-4835
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, documentmk, segmentmk
>Reporter: Alex Parvulescu
>Assignee: Alex Parvulescu
>  Labels: compaction, gc
>
> JMX binding for stopping a running compaction process



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-4909) NRTIndex can get closed while in use

2016-10-10 Thread Chetan Mehrotra (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chetan Mehrotra resolved OAK-4909.
--
   Resolution: Fixed
Fix Version/s: 1.5.12

> NRTIndex can get closed while in use
> 
>
> Key: OAK-4909
> URL: https://issues.apache.org/jira/browse/OAK-4909
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: lucene
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.6, 1.5.12
>
>
> With hybrid indexing enabled it can happen that NRTIndex gets closed while 
> its in use
> {noformat}
> 2016-10-10 14:22:41,094 WARN  NA [Workflow Starter Thread] 
> o.a.j.o.p.i.l.h.DocumentQueue - Error occurred while indexing index 
> [/oak:index/hybridIndex] java.lang.IllegalStateException: null
>   at 
> com.google.common.base.Preconditions.checkState(Preconditions.java:134)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.createReader(NRTIndex.java:168)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getPrimaryReader(NRTIndex.java:87)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getReaders(NRTIndex.java:118)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.getNRTReaders(IndexNode.java:200)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReaders(IndexNode.java:172)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.access$000(IndexNode.java:50)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode$1.run(IndexNode.java:84)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.RefreshOnWritePolicy.refreshOnWriteIfRequired(RefreshOnWritePolicy.java:41)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReadersOnWriteIfRequired(IndexNode.java:168)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.processDocs(DocumentQueue.java:210)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4909) NRTIndex can get closed while in use

2016-10-10 Thread Chetan Mehrotra (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4909?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561856#comment-15561856
 ] 

Chetan Mehrotra commented on OAK-4909:
--

In a running system there can be at max 2 {{IndexNode}} instances opened for 
same index say /oak:index/fooIndex. The older node ( IndexNode1) is being used 
by some query while newer node (IndexNode2) is being constructed via 
{{IndexTracker}} as index content has changed. These 2 node can refer to 3 
{{NRTIndex}} instances

* IndexNode1 - NRTIndex0, NRTIndex1 - Here NRTIndex0 is the previous NRTIndex 
from older IndexNode0
* IndexNode2 - NRTIndex1, NRTIndex2 - Here NRTIndex1 is the previous NRTIndex 
which would not receive any new updates while NRTIndex2 is created just now

Currently logic only accounted for one IndexNode being active hence kept max 2 
NRTIndex instance opened. However given above it should keep 3 NRTIndex 
instances.

Fixed this in r1764047

> NRTIndex can get closed while in use
> 
>
> Key: OAK-4909
> URL: https://issues.apache.org/jira/browse/OAK-4909
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: lucene
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.6
>
>
> With hybrid indexing enabled it can happen that NRTIndex gets closed while 
> its in use
> {noformat}
> 2016-10-10 14:22:41,094 WARN  NA [Workflow Starter Thread] 
> o.a.j.o.p.i.l.h.DocumentQueue - Error occurred while indexing index 
> [/oak:index/hybridIndex] java.lang.IllegalStateException: null
>   at 
> com.google.common.base.Preconditions.checkState(Preconditions.java:134)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.createReader(NRTIndex.java:168)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getPrimaryReader(NRTIndex.java:87)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getReaders(NRTIndex.java:118)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.getNRTReaders(IndexNode.java:200)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReaders(IndexNode.java:172)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.access$000(IndexNode.java:50)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode$1.run(IndexNode.java:84)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.RefreshOnWritePolicy.refreshOnWriteIfRequired(RefreshOnWritePolicy.java:41)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReadersOnWriteIfRequired(IndexNode.java:168)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.processDocs(DocumentQueue.java:210)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4754) Remove ExternalPrivateStoreIT and ExternalSharedStoreIT

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4754?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4754:
-
Fix Version/s: (was: Segment Tar 0.0.20)

> Remove ExternalPrivateStoreIT and ExternalSharedStoreIT
> ---
>
> Key: OAK-4754
> URL: https://issues.apache.org/jira/browse/OAK-4754
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.10
>Reporter: Timothee Maret
>Assignee: Timothee Maret
>
> The classes 
> {{org.apache.jackrabbit.oak.segment.standby.ExternalPrivateStoreIT}} and 
> {{org.apache.jackrabbit.oak.segment.standby.ExternalSharedStoreIT}} do not 
> contain any tests and are not referenced.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4040) Some classes from o.a.j.o.plugins.segment.compaction should be exported

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4040:
-
Fix Version/s: (was: Segment Tar 0.0.22)

> Some classes from o.a.j.o.plugins.segment.compaction should be exported
> ---
>
> Key: OAK-4040
> URL: https://issues.apache.org/jira/browse/OAK-4040
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Reporter: Francesco Mari
>Assignee: Francesco Mari
>  Labels: technical_debt
>
> Classes 
> {{org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategy}} 
> and 
> {{org.apache.jackrabbit.oak.plugins.segment.compaction.CompactionStrategyMBean}}
>  should be exported. The former is used in the public API of multiple classes 
> from {{org.apache.jackrabbit.oak.plugins.segment.file}} and 
> {{org.apache.jackrabbit.oak.plugins.segment}}, while the latter is used as 
> interface type for a service registered in the whiteboard.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-3695) Expose ratio between waste and real data

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-3695?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-3695:
-
Fix Version/s: (was: Segment Tar 0.0.16)

> Expose ratio between waste and real data
> 
>
> Key: OAK-3695
> URL: https://issues.apache.org/jira/browse/OAK-3695
> Project: Jackrabbit Oak
>  Issue Type: Story
>  Components: segment-tar
>Reporter: Valentin Olteanu
>  Labels: gc
>
> As a user, I want to know the ratio (or precise absolute values) between 
> waste and real data on TarMK, so that I can decide if Revision GC needs to be 
> run. The measurement has to be done on a running repository and without 
> impacting the performance.
> This would also help measure the efficiency of Revision GC and see the effect 
> of improvements. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4752) Coldstandby runs tests with NoopStats

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4752:
-
Fix Version/s: (was: Segment Tar 0.0.20)

> Coldstandby runs tests with NoopStats
> -
>
> Key: OAK-4752
> URL: https://issues.apache.org/jira/browse/OAK-4752
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.10
>Reporter: Timothee Maret
>Assignee: Timothee Maret
> Attachments: OAK-4752.patch, OAK-4752.patch, OAK-4752.patch, 
> OAK-4752.patch
>
>
> As described in OAK-4736, the 
> {{org.apache.jackrabbit.oak.segment.standby.TestBase}} runs with a 
> {{org.apache.jackrabbit.oak.stats.NoopStats}} which makes makes the 
> assertions related to statistics to fail.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4105) Implement FileStore.size through FileStore.approximateSize

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4105?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu updated OAK-4105:
-
Fix Version/s: (was: Segment Tar 0.0.6)

> Implement FileStore.size through FileStore.approximateSize
> --
>
> Key: OAK-4105
> URL: https://issues.apache.org/jira/browse/OAK-4105
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: segment-tar
>Reporter: Michael Dürig
>Assignee: Andrei Dulceanu
>Priority: Minor
>  Labels: resilience
> Attachments: OAK-4105-01.patch, OAK-4105-02.patch
>
>
> {{FileStore.size()}} is prone to lock contention and should not be called too 
> often. As OAK-2879 already introduced an approach for tracking the current 
> size of the file store without having to lock, we might as well promote his 
> to be "the official" implementation. 
> [~frm] WDYT?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4910) Update segment tar to 0.0.14

2016-10-10 Thread Davide Giannella (JIRA)
Davide Giannella created OAK-4910:
-

 Summary: Update segment tar to 0.0.14
 Key: OAK-4910
 URL: https://issues.apache.org/jira/browse/OAK-4910
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, segment-tar
Reporter: Davide Giannella
Assignee: Michael Dürig
Priority: Blocker
 Fix For: 1.6, 1.5.12






--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4909) NRTIndex can get closed while in use

2016-10-10 Thread Chetan Mehrotra (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chetan Mehrotra updated OAK-4909:
-
Summary: NRTIndex can get closed while in use  (was: NRTIndex can get 
closed when in use)

> NRTIndex can get closed while in use
> 
>
> Key: OAK-4909
> URL: https://issues.apache.org/jira/browse/OAK-4909
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: lucene
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.6
>
>
> With hybrid indexing enabled it can happen that NRTIndex gets closed while 
> its in use
> {noformat}
> 2016-10-10 14:22:41,094 WARN  NA [Workflow Starter Thread] 
> o.a.j.o.p.i.l.h.DocumentQueue - Error occurred while indexing index 
> [/oak:index/hybridIndex] java.lang.IllegalStateException: null
>   at 
> com.google.common.base.Preconditions.checkState(Preconditions.java:134)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.createReader(NRTIndex.java:168)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getPrimaryReader(NRTIndex.java:87)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getReaders(NRTIndex.java:118)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.getNRTReaders(IndexNode.java:200)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReaders(IndexNode.java:172)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.access$000(IndexNode.java:50)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode$1.run(IndexNode.java:84)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.RefreshOnWritePolicy.refreshOnWriteIfRequired(RefreshOnWritePolicy.java:41)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReadersOnWriteIfRequired(IndexNode.java:168)
>   at 
> org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.processDocs(DocumentQueue.java:210)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Resolved] (OAK-4901) Improve SizeDeltaGcEstimation logging

2016-10-10 Thread Alex Parvulescu (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4901?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alex Parvulescu resolved OAK-4901.
--
   Resolution: Fixed
 Assignee: Alex Parvulescu
Fix Version/s: Segment Tar 0.0.16

thanks [~volteanu] for the contribution!
fixed with http://svn.apache.org/viewvc?rev=1764039=rev



> Improve SizeDeltaGcEstimation logging
> -
>
> Key: OAK-4901
> URL: https://issues.apache.org/jira/browse/OAK-4901
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: segment-tar
>Affects Versions: Segment Tar 0.0.14
>Reporter: Valentin Olteanu
>Assignee: Alex Parvulescu
>Priority: Minor
> Fix For: Segment Tar 0.0.16
>
> Attachments: OAK-4901.patch
>
>
> The current message logged after estimation is not very clear for someone 
> that does not know how it works:
> {code}
> 06.10.2016 18:53:07.819 *INFO* [TarMK revision gc 
> [/Users/volteanu/workspace/test/author/crx-quickstart/repository/segmentstore]]
>  org.apache.jackrabbit.oak.segment.file.FileStore TarMK GC #1: estimation 
> completed in 7.362 ms (7 ms). Size delta is 0% or 880.3 MB/880.9 MB 
> (880258560/880892416 bytes), so skipping compaction for now
> {code}
> I think it should also list the delta in absolute value and the threshold it 
> is compared against.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4909) NRTIndex can get closed when in use

2016-10-10 Thread Chetan Mehrotra (JIRA)
Chetan Mehrotra created OAK-4909:


 Summary: NRTIndex can get closed when in use
 Key: OAK-4909
 URL: https://issues.apache.org/jira/browse/OAK-4909
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: lucene
Reporter: Chetan Mehrotra
Assignee: Chetan Mehrotra
 Fix For: 1.6


With hybrid indexing enabled it can happen that NRTIndex gets closed while its 
in use

{noformat}
2016-10-10 14:22:41,094 WARN  NA [Workflow Starter Thread] 
o.a.j.o.p.i.l.h.DocumentQueue - Error occurred while indexing index 
[/oak:index/hybridIndex] java.lang.IllegalStateException: null
at 
com.google.common.base.Preconditions.checkState(Preconditions.java:134)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.createReader(NRTIndex.java:168)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getPrimaryReader(NRTIndex.java:87)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex.getReaders(NRTIndex.java:118)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.getNRTReaders(IndexNode.java:200)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReaders(IndexNode.java:172)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.access$000(IndexNode.java:50)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode$1.run(IndexNode.java:84)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.RefreshOnWritePolicy.refreshOnWriteIfRequired(RefreshOnWritePolicy.java:41)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode.refreshReadersOnWriteIfRequired(IndexNode.java:168)
at 
org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.DocumentQueue.processDocs(DocumentQueue.java:210)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (OAK-4796) filter events before adding to ChangeProcessor's queue

2016-10-10 Thread Stefan Egli (JIRA)

[ 
https://issues.apache.org/jira/browse/OAK-4796?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15561548#comment-15561548
 ] 

Stefan Egli commented on OAK-4796:
--

split up this task into 2 sub-tasks, things will be thus followed up there:
* OAK-4907 : collect ChangeSet in a validator, store in CommitContext
* OAK-4908 : add 'exclusion' support to BackgroundObserver and ChangeProcessor 
to use that for best-effort-prefiltering

> filter events before adding to ChangeProcessor's queue
> --
>
> Key: OAK-4796
> URL: https://issues.apache.org/jira/browse/OAK-4796
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: jcr
>Affects Versions: 1.5.9
>Reporter: Stefan Egli
>Assignee: Stefan Egli
>  Labels: observation
> Fix For: 1.6
>
> Attachments: OAK-4796.changeSet.patch, OAK-4796.patch
>
>
> Currently the 
> [ChangeProcessor.contentChanged|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L335]
>  is in charge of doing the event diffing and filtering and does so in a 
> pooled Thread, ie asynchronously, at a later stage independent from the 
> commit. This has the advantage that the commit is fast, but has the following 
> potentially negative effects:
> # events (in the form of ContentChange Objects) occupy a slot of the queue 
> even if the listener is not interested in it - any commit lands on any 
> listener's queue. This reduces the capacity of the queue for 'actual' events 
> to be delivered. It therefore increases the risk that the queue fills - and 
> when full has various consequences such as loosing the CommitInfo etc.
> # each event==ContentChange later on must be evaluated, and for that a diff 
> must be calculated. Depending on runtime behavior that diff might be 
> expensive if no longer in the cache (documentMk specifically).
> As an improvement, this diffing+filtering could be done at an earlier stage 
> already, nearer to the commit, and in case the filter would ignore the event, 
> it would not have to be put into the queue at all, thus avoiding occupying a 
> slot and later potentially slower diffing.
> The suggestion is to implement this via the following algorithm:
> * During the commit, in a {{Validator}} the listener's filters are evaluated 
> - in an as-efficient-as-possible manner (Reason for doing it in a Validator 
> is that this doesn't add overhead as oak already goes through all changes for 
> other Validators). As a result a _list of potentially affected observers_ is 
> added to the {{CommitInfo}} (false positives are fine).
> ** Note that the above adds cost to the commit and must therefore be 
> carefully done and measured
> ** One potential measure could be to only do filtering when listener's queues 
> are larger than a certain threshold (eg 10)
> * The ChangeProcessor in {{contentChanged}} (in the one created in 
> [createObserver|https://github.com/apache/jackrabbit-oak/blob/f4f4e01dd8f708801883260481d37fdcd5868deb/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/observation/ChangeProcessor.java#L224])
>  then checks the new commitInfo's _potentially affected observers_ list and 
> if it's not in the list, adds a {{NOOP}} token at the end of the queue. If 
> there's already a NOOP there, the two are collapsed (this way when a filter 
> is not affected it would have a NOOP at the end of the queue). If later on a 
> no-NOOP item is added, the NOOP's {{root}} is used as the {{previousRoot}} 
> for the newly added {{ContentChange}} obj.
> ** To achieve that, the ContentChange obj is extended to not only have the 
> "to" {{root}} pointer, but also the "from" {{previousRoot}} pointer which 
> currently is implicitly maintained.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4908) Best-effort prefiltering in ChangeProcessor based on ChangeSet

2016-10-10 Thread Stefan Egli (JIRA)
Stefan Egli created OAK-4908:


 Summary: Best-effort prefiltering in ChangeProcessor based on 
ChangeSet
 Key: OAK-4908
 URL: https://issues.apache.org/jira/browse/OAK-4908
 Project: Jackrabbit Oak
  Issue Type: Technical task
  Components: core, jcr
Affects Versions: 1.5.11
Reporter: Stefan Egli
Assignee: Stefan Egli
 Fix For: 1.6


This is a subtask as a result of 
[discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
 around design in OAK-4796:

Based on the ChangeSet provided with OAK-4907 in the CommitContext, the 
ChangeProcessor should do a best-effort prefiltering of commits before they get 
added to the (BackgroundObserver's) queue.

This consists of the following parts:
* the support for optionally excluding commits from being added to the queue in 
the BackgroundObserver
* the ChangeProcessor using OAK-4907's ChangeSet of the CommitContext for 
best-effort prefiltering
* the BackgroundObserver signaling downstream Observers that a change should be 
excluded via a {{NOOP_CHANGE}} CommitInfo




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Updated] (OAK-4907) Collect changes (paths, nts, props..) of a commit in a validator

2016-10-10 Thread Stefan Egli (JIRA)

 [ 
https://issues.apache.org/jira/browse/OAK-4907?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Stefan Egli updated OAK-4907:
-
Description: 
It would be useful to collect a set of changes of a commit (eg in a validator) 
that could later be used in an Observer for eg prefiltering.

Such a change collector should collect paths, nodetypes, properties, node-names 
(and perhaps more at a later stage) of all changes and store the result in the 
CommitInfo's CommitContext.

Note that this is a result of 
[discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
 around design in OAK-4796

  was:
It would be useful to collect a set of changes of a commit (eg in a validator) 
that could later be used in an Observer for eg prefiltering.

Such a change collector should collect paths, nodetypes, properties, node-names 
(and perhaps more at a later stage) of all changes and store the result in the 
CommitInfo's CommitContext.


> Collect changes (paths, nts, props..) of a commit in a validator
> 
>
> Key: OAK-4907
> URL: https://issues.apache.org/jira/browse/OAK-4907
> Project: Jackrabbit Oak
>  Issue Type: Technical task
>  Components: core
>Affects Versions: 1.5.11
>Reporter: Stefan Egli
>Assignee: Stefan Egli
> Fix For: 1.6
>
>
> It would be useful to collect a set of changes of a commit (eg in a 
> validator) that could later be used in an Observer for eg prefiltering.
> Such a change collector should collect paths, nodetypes, properties, 
> node-names (and perhaps more at a later stage) of all changes and store the 
> result in the CommitInfo's CommitContext.
> Note that this is a result of 
> [discussions|https://issues.apache.org/jira/browse/OAK-4796?focusedCommentId=15550962=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-15550962]
>  around design in OAK-4796



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4907) Collect changes (paths, nts, props..) of a commit in a validator

2016-10-10 Thread Stefan Egli (JIRA)
Stefan Egli created OAK-4907:


 Summary: Collect changes (paths, nts, props..) of a commit in a 
validator
 Key: OAK-4907
 URL: https://issues.apache.org/jira/browse/OAK-4907
 Project: Jackrabbit Oak
  Issue Type: Technical task
  Components: core
Affects Versions: 1.5.11
Reporter: Stefan Egli
Assignee: Stefan Egli
 Fix For: 1.6


It would be useful to collect a set of changes of a commit (eg in a validator) 
that could later be used in an Observer for eg prefiltering.

Such a change collector should collect paths, nodetypes, properties, node-names 
(and perhaps more at a later stage) of all changes and store the result in the 
CommitInfo's CommitContext.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Created] (OAK-4906) Support relative property based query by transforming the path

2016-10-10 Thread Chetan Mehrotra (JIRA)
Chetan Mehrotra created OAK-4906:


 Summary: Support relative property based query by transforming the 
path
 Key: OAK-4906
 URL: https://issues.apache.org/jira/browse/OAK-4906
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: lucene
Reporter: Chetan Mehrotra
Assignee: Chetan Mehrotra
Priority: Minor
 Fix For: 1.6


PropertyIndex supports query like below

{noformat}
/jcr:root//*[jcr:content/@keywords]
{noformat}

For such query _keywords_ property is indexed and the as part of Cursor 
returned for the query the path is transformed to return the parent path if the 
parent node is _jcr:content_

Currently LucenePropertyIndex supports indexing relative properties wrt base 
node like {{jcr:content/metadata/status}}. Here it would index the relative 
property by refererring to its relative name. 

To simplify switch to LucenePropertyIndex (as part of hybrid index support) 
LucenePropertyIndex should also support for such queries where property index 
definition only specifies indexing _keywords_ but the query is using a relative 
property. So LucenePropertyIndex should

# First check if it has a property definition for _jcr:content/keywords_
# If not check if the indexingRule is for nt:base
# If yes check if it has property definition for _keywords_
# If yes then use the index to evaluate the query and return transformed result

LucenePropertyIndex already do such transformations for fulltext constraints. 
With this we extend that support for property restrictions also



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)