[jira] [Comment Edited] (OAK-3987) Indexer dry run mode

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra edited comment on OAK-3987 at 7/19/17 5:08 AM:
---

[~edivad] oak-run tool now supports out-of-band indexing where no changes are 
done to NodeStore [1]. This meets the dry run requirements.

{noformat}
 java -jar oak-run*.jar index --reindex \
 --index-paths=/oak:index/indexName \
 --checkpoint=head \
 --fds-path=/path/to/datastore  /path/to/segmentstore/ 
{noformat}

If this looks fine to you then I would like to resolve this issue as done

[1] 
https://jackrabbit.apache.org/oak/docs/query/oak-run-indexing.html#out-of-band-indexing


was (Author: chetanm):
[~edivad] oak-run tool now supports out-of-band indexing where no changes are 
done to NodeStore [1]. This meets the dry run requirements.

If this looks fine to you then I would like to resolve this issue as done

[1] 
https://jackrabbit.apache.org/oak/docs/query/oak-run-indexing.html#out-of-band-indexing

> Indexer dry run mode
> 
>
> Key: OAK-3987
> URL: https://issues.apache.org/jira/browse/OAK-3987
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing
>Reporter: Alex Deparvu
>Assignee: Davide Giannella
> Fix For: 1.8
>
>
> Based on a discussion on the dev list, it would be interesting to provide a 
> {{dry run}} mode for the indexer which would give an indication of an average 
> indexing time.
> Input could be:
> * path to index definition (mandatory)
> * path to the content (mandatory, default could be {{/}})
> * max number of nodes (optional, but I'd still cap this value so indexing 
> doesn't take over the entire aem instance)
> Also, we could do this on a separate (dedicated) thread so it doesn't 
> interfere with existing indexers.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-3987) Indexer dry run mode

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra updated OAK-3987:
-
Fix Version/s: 1.8

> Indexer dry run mode
> 
>
> Key: OAK-3987
> URL: https://issues.apache.org/jira/browse/OAK-3987
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing
>Reporter: Alex Deparvu
>Assignee: Davide Giannella
> Fix For: 1.8
>
>
> Based on a discussion on the dev list, it would be interesting to provide a 
> {{dry run}} mode for the indexer which would give an indication of an average 
> indexing time.
> Input could be:
> * path to index definition (mandatory)
> * path to the content (mandatory, default could be {{/}})
> * max number of nodes (optional, but I'd still cap this value so indexing 
> doesn't take over the entire aem instance)
> Also, we could do this on a separate (dedicated) thread so it doesn't 
> interfere with existing indexers.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-3987) Indexer dry run mode

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-3987:
--

[~edivad] oak-run tool now supports out-of-band indexing where no changes are 
done to NodeStore [1]. This meets the dry run requirements.

If this looks fine to you then I would like to resolve this issue as done

[1] 
https://jackrabbit.apache.org/oak/docs/query/oak-run-indexing.html#out-of-band-indexing

> Indexer dry run mode
> 
>
> Key: OAK-3987
> URL: https://issues.apache.org/jira/browse/OAK-3987
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing
>Reporter: Alex Deparvu
>Assignee: Davide Giannella
>
> Based on a discussion on the dev list, it would be interesting to provide a 
> {{dry run}} mode for the indexer which would give an indication of an average 
> indexing time.
> Input could be:
> * path to index definition (mandatory)
> * path to the content (mandatory, default could be {{/}})
> * max number of nodes (optional, but I'd still cap this value so indexing 
> doesn't take over the entire aem instance)
> Also, we could do this on a separate (dedicated) thread so it doesn't 
> interfere with existing indexers.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6469) CompositePermissionProvider should implement AggregatedPermissionProvider

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu updated OAK-6469:
--
Attachment: OAK-6469.patch

attaching patch: [^OAK-6469.patch]. this also overwrites the fix for OAK-6451 
with a proper impl.

[~anchela] would appreciate a look!

> CompositePermissionProvider should implement AggregatedPermissionProvider
> -
>
> Key: OAK-6469
> URL: https://issues.apache.org/jira/browse/OAK-6469
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Attachments: OAK-6469.patch
>
>
> A more in-depth followup of OAK-6451. It turns out you can't mix CUG setup 
> with the Multiplexing setup because the {{CompositePermissionProvider}} 
> cannot contain another composite.
> Making {{CompositePermissionProvider}} implement 
> {{AggregatedPermissionProvider}} opens the door for composites of composites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6469) CompositePermissionProvider should implement AggregatedPermissionProvider

2017-07-18 Thread Alex Deparvu (JIRA)
Alex Deparvu created OAK-6469:
-

 Summary: CompositePermissionProvider should implement 
AggregatedPermissionProvider
 Key: OAK-6469
 URL: https://issues.apache.org/jira/browse/OAK-6469
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, security
Reporter: Alex Deparvu
Assignee: Alex Deparvu


A more in-depth followup of OAK-6451. It turns out you can't mix CUG setup with 
the Multiplexing setup because the {{CompositePermissionProvider}} cannot 
contain another composite.
Making {{CompositePermissionProvider}} implement 
{{AggregatedPermissionProvider}} opens the door for composites of composites.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6467) CompositeTreePermission can create an invalid TreePermsssion object

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu resolved OAK-6467.
---
   Resolution: Won't Fix
Fix Version/s: (was: 1.7.4)

> CompositeTreePermission can create an invalid TreePermsssion object
> ---
>
> Key: OAK-6467
> URL: https://issues.apache.org/jira/browse/OAK-6467
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
>
> There's a case where the {{CompositePermissionProvider}} can create an 
> invalid {{TreePermsssion}} instance via the {{CompositeTreePermission}} 
> object. It can return a {{NO_RECOURSE}} if there's a single provider 
> configured (like the CUG) that is not able to handle that specific check.
> {noformat}
> java.lang.UnsupportedOperationException: null
>   at 
> org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission$3.canRead(TreePermission.java:212)
>   at 
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.exists(SecureNodeBuilder.java:128)
>   at 
> org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.exists(AbstractTree.java:225)
>   at 
> org.apache.jackrabbit.oak.core.MutableTree.exists(MutableTree.java:122)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNode(SessionDelegate.java:427)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getRootNode(SessionDelegate.java:415)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getItem(SessionDelegate.java:440)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemInternal(SessionImpl.java:166)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.access$400(SessionImpl.java:81)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:228)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:225)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:225)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-5740) deliver overflow change even without new commit

2017-07-18 Thread Vikas Saurabh (JIRA)

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

Vikas Saurabh commented on OAK-5740:


[~egli], I could not read through the patch closely (but, I had seen the 
changes earlier anyway.. so, "patch lgtm" still holds :) ).

I think we should fix this issue (... and if that sounds too risky to others, 
then close this issue noting the same)... I mean that I don't see any point in 
holding this issue open.

> deliver overflow change even without new commit
> ---
>
> Key: OAK-5740
> URL: https://issues.apache.org/jira/browse/OAK-5740
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: jcr
>Affects Versions: 1.6.0
>Reporter: Stefan Egli
>Assignee: Stefan Egli
>Priority: Minor
> Fix For: 1.8
>
> Attachments: OAK-5740.StuffAtop-v2-patch.patch, 
> OAK-5740.testcase.patch, OAK-5740.testcase.patch, OAK-5740.v2.patch, 
> OAK-5740.v3.patch
>
>
> As [reported|http://markmail.org/message/2qxle24f6zu2vpms] by [~catholicon] 
> on oak-dev the observation queue only delivers the so-called _overflow 
> entry/change_ only when new commits are 'coming in'. We might want to 
> consider fixing this, even though arguably this is a very rare case (since 
> typically the observation queue is configured to be very large)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6467) CompositeTreePermission can create an invalid TreePermsssion object

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu commented on OAK-6467:
---

yes, you are right. unfortunately I realized that this might actually be 
related to OAK-6451 but wanted to double-check before closing this as won't fix 
:)

> CompositeTreePermission can create an invalid TreePermsssion object
> ---
>
> Key: OAK-6467
> URL: https://issues.apache.org/jira/browse/OAK-6467
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Fix For: 1.7.4
>
>
> There's a case where the {{CompositePermissionProvider}} can create an 
> invalid {{TreePermsssion}} instance via the {{CompositeTreePermission}} 
> object. It can return a {{NO_RECOURSE}} if there's a single provider 
> configured (like the CUG) that is not able to handle that specific check.
> {noformat}
> java.lang.UnsupportedOperationException: null
>   at 
> org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission$3.canRead(TreePermission.java:212)
>   at 
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.exists(SecureNodeBuilder.java:128)
>   at 
> org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.exists(AbstractTree.java:225)
>   at 
> org.apache.jackrabbit.oak.core.MutableTree.exists(MutableTree.java:122)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNode(SessionDelegate.java:427)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getRootNode(SessionDelegate.java:415)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getItem(SessionDelegate.java:440)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemInternal(SessionImpl.java:166)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.access$400(SessionImpl.java:81)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:228)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:225)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:225)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6467) CompositeTreePermission can create an invalid TreePermsssion object

2017-07-18 Thread angela (JIRA)

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

angela commented on OAK-6467:
-

[~stillalex], i am not sure this is really a bug. if your have a security setup 
that ends up with a {{TreePermission.NO_RECOURSE}} as the only option left your 
setup is wrong and this should be identified during testing of a new 
authorization model.

> CompositeTreePermission can create an invalid TreePermsssion object
> ---
>
> Key: OAK-6467
> URL: https://issues.apache.org/jira/browse/OAK-6467
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Fix For: 1.7.4
>
>
> There's a case where the {{CompositePermissionProvider}} can create an 
> invalid {{TreePermsssion}} instance via the {{CompositeTreePermission}} 
> object. It can return a {{NO_RECOURSE}} if there's a single provider 
> configured (like the CUG) that is not able to handle that specific check.
> {noformat}
> java.lang.UnsupportedOperationException: null
>   at 
> org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission$3.canRead(TreePermission.java:212)
>   at 
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.exists(SecureNodeBuilder.java:128)
>   at 
> org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.exists(AbstractTree.java:225)
>   at 
> org.apache.jackrabbit.oak.core.MutableTree.exists(MutableTree.java:122)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNode(SessionDelegate.java:427)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getRootNode(SessionDelegate.java:415)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getItem(SessionDelegate.java:440)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemInternal(SessionImpl.java:166)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.access$400(SessionImpl.java:81)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:228)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:225)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:225)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6468) Include the tail generation in the binary references index

2017-07-18 Thread Francesco Mari (JIRA)
Francesco Mari created OAK-6468:
---

 Summary: Include the tail generation in the binary references index
 Key: OAK-6468
 URL: https://issues.apache.org/jira/browse/OAK-6468
 Project: Jackrabbit Oak
  Issue Type: New Feature
  Components: segment-tar
Reporter: Francesco Mari
Assignee: Francesco Mari
 Fix For: 1.8


OAK-3349 introduces the tail generation, an additional generation number 
associated to each segment that is consulted during the cleanup phase to 
determine if a segment should be removed. The tail generation is currently only 
preset in the segments. For efficiency purposes, it should be added to the 
binary references index too, like the full generation number.




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6467) CompositeTreePermission can create an invalid TreePermsssion object

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu updated OAK-6467:
--
Description: 
There's a case where the {{CompositePermissionProvider}} can create an invalid 
{{TreePermsssion}} instance via the {{CompositeTreePermission}} object. It can 
return a {{NO_RECOURSE}} if there's a single provider configured (like the CUG) 
that is not able to handle that specific check.

{noformat}
java.lang.UnsupportedOperationException: null
at 
org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission$3.canRead(TreePermission.java:212)
at 
org.apache.jackrabbit.oak.core.SecureNodeBuilder.exists(SecureNodeBuilder.java:128)
at 
org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.exists(AbstractTree.java:225)
at 
org.apache.jackrabbit.oak.core.MutableTree.exists(MutableTree.java:122)
at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNode(SessionDelegate.java:427)
at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getRootNode(SessionDelegate.java:415)
at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getItem(SessionDelegate.java:440)
at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemInternal(SessionImpl.java:166)
at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.access$400(SessionImpl.java:81)
at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:228)
at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:225)
at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243)
at 
org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:225)
{noformat}


  was:There's a case where the {{CompositePermissionProvider}} can create an 
invalid {{TreePermsssion}} instance via the {{CompositeTreePermission}} object. 
It can return a {{NO_RECOURSE}} if there's a single provider configured (like 
the CUG) that is not able to handle that specific check.


> CompositeTreePermission can create an invalid TreePermsssion object
> ---
>
> Key: OAK-6467
> URL: https://issues.apache.org/jira/browse/OAK-6467
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Fix For: 1.7.4
>
>
> There's a case where the {{CompositePermissionProvider}} can create an 
> invalid {{TreePermsssion}} instance via the {{CompositeTreePermission}} 
> object. It can return a {{NO_RECOURSE}} if there's a single provider 
> configured (like the CUG) that is not able to handle that specific check.
> {noformat}
> java.lang.UnsupportedOperationException: null
>   at 
> org.apache.jackrabbit.oak.spi.security.authorization.permission.TreePermission$3.canRead(TreePermission.java:212)
>   at 
> org.apache.jackrabbit.oak.core.SecureNodeBuilder.exists(SecureNodeBuilder.java:128)
>   at 
> org.apache.jackrabbit.oak.plugins.tree.impl.AbstractTree.exists(AbstractTree.java:225)
>   at 
> org.apache.jackrabbit.oak.core.MutableTree.exists(MutableTree.java:122)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getNode(SessionDelegate.java:427)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getRootNode(SessionDelegate.java:415)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.getItem(SessionDelegate.java:440)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemInternal(SessionImpl.java:166)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.access$400(SessionImpl.java:81)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:228)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl$3.performNullable(SessionImpl.java:225)
>   at 
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243)
>   at 
> org.apache.jackrabbit.oak.jcr.session.SessionImpl.getItemOrNull(SessionImpl.java:225)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6467) CompositeTreePermission can create an invalid TreePermsssion object

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu updated OAK-6467:
--
Fix Version/s: 1.7.4

> CompositeTreePermission can create an invalid TreePermsssion object
> ---
>
> Key: OAK-6467
> URL: https://issues.apache.org/jira/browse/OAK-6467
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Fix For: 1.7.4
>
>
> There's a case where the {{CompositePermissionProvider}} can create an 
> invalid {{TreePermsssion}} instance via the {{CompositeTreePermission}} 
> object. It can return a {{NO_RECOURSE}} if there's a single provider 
> configured (like the CUG) that is not able to handle that specific check.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6467) CompositeTreePermission can create an invalid TreePermsssion object

2017-07-18 Thread Alex Deparvu (JIRA)
Alex Deparvu created OAK-6467:
-

 Summary: CompositeTreePermission can create an invalid 
TreePermsssion object
 Key: OAK-6467
 URL: https://issues.apache.org/jira/browse/OAK-6467
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, security
Reporter: Alex Deparvu
Assignee: Alex Deparvu


There's a case where the {{CompositePermissionProvider}} can create an invalid 
{{TreePermsssion}} instance via the {{CompositeTreePermission}} object. It can 
return a {{NO_RECOURSE}} if there's a single provider configured (like the CUG) 
that is not able to handle that specific check.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-3710) Continuous revision GC

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger commented on OAK-3710:
---

Added an option to the DocumentNodeStoreService ({{versionGCContinuous}}) that 
enable continuous Revision GC (default: false). Implemented in trunk: 
http://svn.apache.org/r1802289

There are still some details to figure out. With the option enabled, the 
{{VersionGarbageCollector}} logs info messages every five seconds. Those 
messages are useful when GC runs e.g. every 24 hours, but are too verbose when 
run frequently.

> Continuous revision GC
> --
>
> Key: OAK-3710
> URL: https://issues.apache.org/jira/browse/OAK-3710
> Project: Jackrabbit Oak
>  Issue Type: New Feature
>  Components: documentmk
>Reporter: Marcel Reutegger
>
> Implement continuous revision GC cleaning up documents older than a given 
> threshold (e.g. one day). This issue is related to OAK-3070 where each GC run 
> starts where the last one finished.
> This will avoid peak load on the system as we see it right now, when GC is 
> triggered once a day.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6463) Property index update fails in composite NodeStore setup

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra resolved OAK-6463.
--
   Resolution: Fixed
Fix Version/s: 1.7.4

> Property index update fails in composite NodeStore setup
> 
>
> Key: OAK-6463
> URL: https://issues.apache.org/jira/browse/OAK-6463
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite, property-index
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.8, 1.7.4
>
> Attachments: OAK-6463-v1.patch
>
>
> In a CompositeNodeStore setup involving 1 read only mount a commit involving 
> update of property index may fail even if the commit does not update content 
> under read only paths



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6463) Property index update fails in composite NodeStore setup

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-6463:
--

bq.  I'm wondering if the 'index' supplier should not be wrapped into a 
Suppliers.memoize call so you'd get the same NodeBuilder instance on each 
.get() call

Makes sense.

Applied a modified patch which uses memoize supplier with r1802288

> Property index update fails in composite NodeStore setup
> 
>
> Key: OAK-6463
> URL: https://issues.apache.org/jira/browse/OAK-6463
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite, property-index
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.8, 1.7.4
>
> Attachments: OAK-6463-v1.patch
>
>
> In a CompositeNodeStore setup involving 1 read only mount a commit involving 
> update of property index may fail even if the commit does not update content 
> under read only paths



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6466) Suppress NOP info message from revision GC

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-6466.
---
   Resolution: Fixed
Fix Version/s: 1.7.4

Done in trunk: http://svn.apache.org/r1802287

> Suppress NOP info message from revision GC
> --
>
> Key: OAK-6466
> URL: https://issues.apache.org/jira/browse/OAK-6466
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, documentmk
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
>Priority: Minor
> Fix For: 1.8, 1.7.4
>
>
> The Revision GC sometimes logs messages like this:
> {noformat}
> Proceeding to reset [0] _deletedOnce flags
> {noformat}
> It should only log messages when it actually does some work.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Comment Edited] (OAK-6450) Stop relying on the service.pid property in SecurityProviderRegistration

2017-07-18 Thread angela (JIRA)

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

angela edited comment on OAK-6450 at 7/18/17 12:32 PM:
---

[~rombert], the patch does not include an update of the Oak documentation, 
which actually describes the required service ids. The following pages need to 
be updated:

- http://jackrabbit.apache.org/oak/docs/security/introduction.html
- http://jackrabbit.apache.org/oak/docs/security/authorization/composite.html
- http://jackrabbit.apache.org/oak/docs/security/authorization/cug.html

As far as the actual patch is concerned: 
- why are the {{RegistrationConstants}} located in 
_org.apache.jackrabbit.oak.security.authorization_ package? that looks wrong to 
me as it is used also in non-authorization packages.
- shouldn't these {{RegistrationConstants}} be public in the SPI space in order 
to make sure that custom implementations can use it? i would love to get rid of 
the {{oak-core}} dependencies in non-core modules (see also OAK-6318)
- i am not sure about the PN prefix with the {{RegistrationConstants}}. what 
does it stand for?

and one more thing: unless already present i think the patch should come with 
explicit testing for the new way and the compat-mode (and a mixture of both) in 
order to make sure we don't break existing customers that have custom lists of 
required service (such as e.g. Adobe AEM).


was (Author: anchela):
[~rombert], the patch does not include an update of the Oak documentation, 
which actually describes the required service ids. The following pages need to 
be updated:

- http://jackrabbit.apache.org/oak/docs/security/introduction.html
- http://jackrabbit.apache.org/oak/docs/security/authorization/composite.html
- http://jackrabbit.apache.org/oak/docs/security/authorization/cug.html

As far as the actual patch is concerned: 
- why are the {{RegistrationConstants}} located in 
_org.apache.jackrabbit.oak.security.authorization_ package? that looks wrong to 
me as it is used also in non-authorization packages.
- shouldn't these {{RegistrationConstants}} be public in the SPI space in order 
to make sure that custom implementations can use it? i would love to get rid of 
the {{oak-core}} dependencies in non-core modules (see also OAK-6318)
- i am not sure about the PN prefix with the {{RegistrationConstants}}. what 
does it stand for?

> Stop relying on the service.pid property in SecurityProviderRegistration
> 
>
> Key: OAK-6450
> URL: https://issues.apache.org/jira/browse/OAK-6450
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: security
>Reporter: Robert Munteanu
>Assignee: Robert Munteanu
> Fix For: 1.8, 1.7.4
>
> Attachments: 
> 0001-OAK-6450-Stop-relying-on-the-service.pid-property-in.patch, 
> 0002-OAK-6450-Stop-relying-on-the-service.pid-property-in.patch
>
>
> As discussed in OAK-6111, we should stop relying on the {{service.pid}} OSGi 
> property for tracking required services as it was incorrectly set so far by 
> the {{maven-scr-plugin}}.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6450) Stop relying on the service.pid property in SecurityProviderRegistration

2017-07-18 Thread angela (JIRA)

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

angela commented on OAK-6450:
-

[~rombert], the patch does not include an update of the Oak documentation, 
which actually describes the required service ids. The following pages need to 
be updated:

- http://jackrabbit.apache.org/oak/docs/security/introduction.html
- http://jackrabbit.apache.org/oak/docs/security/authorization/composite.html
- http://jackrabbit.apache.org/oak/docs/security/authorization/cug.html

As far as the actual patch is concerned: 
- why are the {{RegistrationConstants}} located in 
_org.apache.jackrabbit.oak.security.authorization_ package? that looks wrong to 
me as it is used also in non-authorization packages.
- shouldn't these {{RegistrationConstants}} be public in the SPI space in order 
to make sure that custom implementations can use it? i would love to get rid of 
the {{oak-core}} dependencies in non-core modules (see also OAK-6318)
- i am not sure about the PN prefix with the {{RegistrationConstants}}. what 
does it stand for?

> Stop relying on the service.pid property in SecurityProviderRegistration
> 
>
> Key: OAK-6450
> URL: https://issues.apache.org/jira/browse/OAK-6450
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: security
>Reporter: Robert Munteanu
>Assignee: Robert Munteanu
> Fix For: 1.8, 1.7.4
>
> Attachments: 
> 0001-OAK-6450-Stop-relying-on-the-service.pid-property-in.patch, 
> 0002-OAK-6450-Stop-relying-on-the-service.pid-property-in.patch
>
>
> As discussed in OAK-6111, we should stop relying on the {{service.pid}} OSGi 
> property for tracking required services as it was incorrectly set so far by 
> the {{maven-scr-plugin}}.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6462) Incorrect memory calculation for bundled node states

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-6462.
---
   Resolution: Fixed
Fix Version/s: 1.7.4

Fixed in trunk: http://svn.apache.org/r1802286

> Incorrect memory calculation for bundled node states
> 
>
> Key: OAK-6462
> URL: https://issues.apache.org/jira/browse/OAK-6462
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, documentmk
>Affects Versions: 1.6.0
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
>  Labels: candidate_oak_1_6
> Fix For: 1.8, 1.7.4
>
>
> OAK-1312 introduced bundling of nodes into a document and enabled the feature 
> for nt:file nodes. A DocumentNodeState of type nt:file now has an incorrect 
> memory calculation because the node state references a BundlingContext which 
> also references the binary property reference. Such a node state is now much 
> heavier than before and can cause OOME.
> This is a clone of OAK-5226, which was supposed to fix the described issue, 
> however it turns out the fix is not sufficient and memory calculation is 
> still incorrect for bundled nodes/properties.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6463) Property index update fails in composite NodeStore setup

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu commented on OAK-6463:
---

very interesting fix! I'm wondering if the 'index' supplier should not be 
wrapped into a {{Suppliers.memoize}} call so you'd get the same {{NodeBuilder}} 
instance on each {{.get()}} call. In the current form it will return a new 
builder on each call and while it will still probably work, I'm a bit worried 
about the perf impact.

> Property index update fails in composite NodeStore setup
> 
>
> Key: OAK-6463
> URL: https://issues.apache.org/jira/browse/OAK-6463
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite, property-index
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.8
>
> Attachments: OAK-6463-v1.patch
>
>
> In a CompositeNodeStore setup involving 1 read only mount a commit involving 
> update of property index may fail even if the commit does not update content 
> under read only paths



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6409) Oak-run indexing: improved (user friendly) output

2017-07-18 Thread Paul Chibulcuteanu (JIRA)

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

Paul Chibulcuteanu commented on OAK-6409:
-

[~chetanm], the logs/output look good IMO and everything requested is 
implemented.

> Oak-run indexing: improved (user friendly) output
> -
>
> Key: OAK-6409
> URL: https://issues.apache.org/jira/browse/OAK-6409
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing
>Reporter: Thomas Mueller
>Assignee: Chetan Mehrotra
> Fix For: 1.8
>
>
> The oak-run indexing (OAK-6081) output should be human readable, and if 
> possible minimal. Detailed output should be written to a log file, but stdout 
> should be easy for a user to understand. For example some header info when 
> starting, where to find the detailed output, then one line every 3 seconds 
> about the progress (in %, number of nodes read, ETA), and when done some info 
> on what to do next.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6463) Property index update fails in composite NodeStore setup

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra updated OAK-6463:
-
Attachment: OAK-6463-v1.patch

[patch|^OAK-6463-v1.patch] for the same. 

Issue here was that for any property index update PropertyIndexEditor had to 
initialize NodeBuilder for all IndexStoreStrategy (which are 1 per mount). Now 
if the index did not had entries for private mount at setup time (when writes 
to it were allowed) then later this cases issue as on update the editor would 
try to eagerly initialize the NodeBuilder for :oak:mount-<>-index node even if 
no updates need to be done under that.

This patch fixes this by using a lazy builder i.e. use Supplier 
where NodeBuilder is constructed on demand. With this a mount related index 
node is not created for normal index updates.

[~stillalex] Please review!


> Property index update fails in composite NodeStore setup
> 
>
> Key: OAK-6463
> URL: https://issues.apache.org/jira/browse/OAK-6463
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite, property-index
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.8
>
> Attachments: OAK-6463-v1.patch
>
>
> In a CompositeNodeStore setup involving 1 read only mount a commit involving 
> update of property index may fail even if the commit does not update content 
> under read only paths



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6466) Suppress NOP info message from revision GC

2017-07-18 Thread Marcel Reutegger (JIRA)
Marcel Reutegger created OAK-6466:
-

 Summary: Suppress NOP info message from revision GC
 Key: OAK-6466
 URL: https://issues.apache.org/jira/browse/OAK-6466
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, documentmk
Reporter: Marcel Reutegger
Assignee: Marcel Reutegger
Priority: Minor
 Fix For: 1.8


The Revision GC sometimes logs messages like this:
{noformat}
Proceeding to reset [0] _deletedOnce flags
{noformat}

It should only log messages when it actually does some work.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6407) Refactor oak.spi.query into a separate module/bundle

2017-07-18 Thread angela (JIRA)

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

angela commented on OAK-6407:
-

[~tmueller], regarding your questions:

> Which ones?

see the various issues I fixed recently within the query code base to fix the 
cyclic package dependencies.

> Which ones?

same here.

> What does it solve / prevent exactly, and how?

if the query implementation resides in oak-core and the query-spi gets 
refactored out, it will no longer be possible to introduce cyclic package 
dependencies from exported and non-exported classes as we used to have it in 
oak-core. while this caused a WARNING in the build these WARNINGs where just 
ignored... so i'd rather have it prevented upon build altogether.
moving it out would also allow other modules (e.g. oak-lucene, oak-solr and 
oak-auth-external) to no longer depend on oak-core.

> Why does org.apache.jackrabbit.oak.spi.query need to be moved to a new 
> project, but not for example org.apache.jackrabbit.oak.spi.security?

I want to move out _org.apache.jackrabbit.oak.spi.security_ (OAK-6318) but 
that's blocked by OAK-6319 and consequently by this issue :-)... in fact 
refactoring spi.security out of oak-core is the main reason for looking into 
the query code base.

> If we move those classes, why does oak-lucene still depends on oak-core? It 
> would be nice if oak-lucene just depends on this (and possibly other) spi 
> projects.

yes sure... that's the ultimate goal (see above). i don't recall the very 
details but it might require some additional work in the wast plugins-query 
package space, which i didn't touch so far as i wanted to get the untangle the 
ties between the query implementation and query.spi in a first step and not 
reshuffle everything.

>  Refactor oak.spi.query into a separate module/bundle 
> --
>
> Key: OAK-6407
> URL: https://issues.apache.org/jira/browse/OAK-6407
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, indexing, query
>Reporter: angela
>Assignee: angela
>  Labels: modularization
> Fix For: 1.8
>
> Attachments: OAK-6407.patch
>
>
> now that OAK-6304 and OAK-6355 have been resolved, i would like to suggest 
> that we move the _o.a.j.oak.spi.query_ code base into a separate 
> module/bundle in order to prevent the introduction of bogus cycles and odd 
> package exports in the future.
> [~tmueller], patch will follow asap.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6465) Path supporting fragments should be an unbounded property

2017-07-18 Thread JIRA

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

Tomek Rękawek commented on OAK-6465:


Fixed for trunk in [r1802263|https://svn.apache.org/r1802263].

> Path supporting fragments should be an unbounded property
> -
>
> Key: OAK-6465
> URL: https://issues.apache.org/jira/browse/OAK-6465
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite
>Reporter: Tomek Rękawek
> Fix For: 1.8, 1.7.4
>
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6465) Path supporting fragments should be an unbounded property

2017-07-18 Thread JIRA

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

Tomek Rękawek updated OAK-6465:
---
Fix Version/s: 1.7.4
   1.8
  Component/s: composite

> Path supporting fragments should be an unbounded property
> -
>
> Key: OAK-6465
> URL: https://issues.apache.org/jira/browse/OAK-6465
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite
>Reporter: Tomek Rękawek
> Fix For: 1.8, 1.7.4
>
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6465) Path supporting fragments should be an unbounded property

2017-07-18 Thread JIRA
Tomek Rękawek created OAK-6465:
--

 Summary: Path supporting fragments should be an unbounded property
 Key: OAK-6465
 URL: https://issues.apache.org/jira/browse/OAK-6465
 Project: Jackrabbit Oak
  Issue Type: Bug
Reporter: Tomek Rękawek






--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6462) Incorrect memory calculation for bundled node states

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger updated OAK-6462:
--
Labels: candidate_oak_1_6  (was: )

> Incorrect memory calculation for bundled node states
> 
>
> Key: OAK-6462
> URL: https://issues.apache.org/jira/browse/OAK-6462
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, documentmk
>Affects Versions: 1.6.0
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
>  Labels: candidate_oak_1_6
> Fix For: 1.8
>
>
> OAK-1312 introduced bundling of nodes into a document and enabled the feature 
> for nt:file nodes. A DocumentNodeState of type nt:file now has an incorrect 
> memory calculation because the node state references a BundlingContext which 
> also references the binary property reference. Such a node state is now much 
> heavier than before and can cause OOME.
> This is a clone of OAK-5226, which was supposed to fix the described issue, 
> however it turns out the fix is not sufficient and memory calculation is 
> still incorrect for bundled nodes/properties.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6462) Incorrect memory calculation for bundled node states

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger commented on OAK-6462:
---

Added an ignored test to trunk: http://svn.apache.org/r1802262

> Incorrect memory calculation for bundled node states
> 
>
> Key: OAK-6462
> URL: https://issues.apache.org/jira/browse/OAK-6462
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, documentmk
>Affects Versions: 1.6.0
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
> Fix For: 1.8
>
>
> OAK-1312 introduced bundling of nodes into a document and enabled the feature 
> for nt:file nodes. A DocumentNodeState of type nt:file now has an incorrect 
> memory calculation because the node state references a BundlingContext which 
> also references the binary property reference. Such a node state is now much 
> heavier than before and can cause OOME.
> This is a clone of OAK-5226, which was supposed to fix the described issue, 
> however it turns out the fix is not sufficient and memory calculation is 
> still incorrect for bundled nodes/properties.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6463) Property index update fails in composite NodeStore setup

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-6463:
--

Added ignored tests with 1802261,1802256

> Property index update fails in composite NodeStore setup
> 
>
> Key: OAK-6463
> URL: https://issues.apache.org/jira/browse/OAK-6463
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite, property-index
>Reporter: Chetan Mehrotra
>Assignee: Chetan Mehrotra
> Fix For: 1.8
>
>
> In a CompositeNodeStore setup involving 1 read only mount a commit involving 
> update of property index may fail even if the commit does not update content 
> under read only paths



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6464) Public constructor for RandomStream

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger resolved OAK-6464.
---
   Resolution: Fixed
Fix Version/s: 1.7.4

Done in trunk: http://svn.apache.org/r1802260

> Public constructor for RandomStream
> ---
>
> Key: OAK-6464
> URL: https://issues.apache.org/jira/browse/OAK-6464
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, documentmk
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
>Priority: Trivial
> Fix For: 1.8, 1.7.4
>
>
> The public test utility class RandomStream has a package private constructor. 
> The constructor should be public to make it usable from tests in other 
> packages.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6464) Public constructor for RandomStream

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger updated OAK-6464:
--
Component/s: documentmk

> Public constructor for RandomStream
> ---
>
> Key: OAK-6464
> URL: https://issues.apache.org/jira/browse/OAK-6464
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, documentmk
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
>Priority: Trivial
> Fix For: 1.8, 1.7.4
>
>
> The public test utility class RandomStream has a package private constructor. 
> The constructor should be public to make it usable from tests in other 
> packages.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6464) Public constructor for RandomStream

2017-07-18 Thread Marcel Reutegger (JIRA)
Marcel Reutegger created OAK-6464:
-

 Summary: Public constructor for RandomStream
 Key: OAK-6464
 URL: https://issues.apache.org/jira/browse/OAK-6464
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core
Reporter: Marcel Reutegger
Assignee: Marcel Reutegger
Priority: Trivial
 Fix For: 1.8


The public test utility class RandomStream has a package private constructor. 
The constructor should be public to make it usable from tests in other packages.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6461) Merge all security related validators into a single hook

2017-07-18 Thread angela (JIRA)

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

angela commented on OAK-6461:
-

[~stillalex], in general that looks good to me. the only thing that i would 
like to mention: the composite-configurations have a ranking, which (in 
particular for permission evaluation) is relevant for performance so the 
order within the composite-configurations should be maintained, would that be 
the case with your patch?

> Merge all security related validators into a single hook
> 
>
> Key: OAK-6461
> URL: https://issues.apache.org/jira/browse/OAK-6461
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Attachments: OAK-6461.patch
>
>
> I'd like to see if it's feasible to merge all security related validators 
> into a single hook, instead of a hook per _SecurityConfiguration_.
> Pros
> * all validators will be merged into a single hook, meaning processing will 
> happen via a single diff over the content
> Cons
> * order of hooks will change, there will be commit hooks first, all 
> aggregated validators next and post validation hooks last. I don't think 
> there's any issue with validation itself as all data added by the hooks will 
> be visible to the composite validator.
> This is how the chaining looks like in the current setup:
> {noformat}
> EditorHook : 
> (TokenValidatorProvider),
> VersionablePathHook, 
> EditorHook : 
> (CompositeEditorProvider : ([
> PermissionStoreValidatorProvider, 
> PermissionValidatorProvider, 
> AccessControlValidatorProvider])), 
> EditorHook : 
> (PrivilegeValidatorProvider), 
> EditorHook : 
> (CompositeEditorProvider : ([
> UserValidatorProvider,
> CacheValidatorProvider])),
> PermissionHook, 
> JcrAllCommitHook
> {noformat}
> If we merged them, this is the result:
> {noformat}
> VersionablePathHook, 
> EditorHook : 
> (CompositeEditorProvider : ([
> PermissionStoreValidatorProvider,
> PermissionValidatorProvider,
> AccessControlValidatorProvider, 
> UserValidatorProvider,
> CacheValidatorProvider, 
> PrivilegeValidatorProvider,
> TokenValidatorProvider])),
> PermissionHook, 
> JcrAllCommitHook
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6463) Property index update fails in composite NodeStore setup

2017-07-18 Thread Chetan Mehrotra (JIRA)
Chetan Mehrotra created OAK-6463:


 Summary: Property index update fails in composite NodeStore setup
 Key: OAK-6463
 URL: https://issues.apache.org/jira/browse/OAK-6463
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: composite, property-index
Reporter: Chetan Mehrotra
Assignee: Chetan Mehrotra
 Fix For: 1.8


In a CompositeNodeStore setup involving 1 read only mount a commit involving 
update of property index may fail even if the commit does not update content 
under read only paths



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Assigned] (OAK-6462) Incorrect memory calculation for bundled node states

2017-07-18 Thread Marcel Reutegger (JIRA)

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

Marcel Reutegger reassigned OAK-6462:
-

 Assignee: Marcel Reutegger  (was: Chetan Mehrotra)
Affects Version/s: (was: 1.5.13)
   1.6.0
Fix Version/s: (was: 1.5.15)
   (was: 1.6.0)
   1.8
  Description: 
OAK-1312 introduced bundling of nodes into a document and enabled the feature 
for nt:file nodes. A DocumentNodeState of type nt:file now has an incorrect 
memory calculation because the node state references a BundlingContext which 
also references the binary property reference. Such a node state is now much 
heavier than before and can cause OOME.

This is a clone of OAK-5226, which was supposed to fix the described issue, 
however it turns out the fix is not sufficient and memory calculation is still 
incorrect for bundled nodes/properties.

  was:OAK-1312 introduced bundling of nodes into a document and enabled the 
feature for nt:file nodes. A DocumentNodeState of type nt:file now has an 
incorrect memory calculation because the node state references a 
BundlingContext which also references the binary property reference. Such a 
node state is now much heavier than before and can cause OOME.


> Incorrect memory calculation for bundled node states
> 
>
> Key: OAK-6462
> URL: https://issues.apache.org/jira/browse/OAK-6462
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: core, documentmk
>Affects Versions: 1.6.0
>Reporter: Marcel Reutegger
>Assignee: Marcel Reutegger
> Fix For: 1.8
>
>
> OAK-1312 introduced bundling of nodes into a document and enabled the feature 
> for nt:file nodes. A DocumentNodeState of type nt:file now has an incorrect 
> memory calculation because the node state references a BundlingContext which 
> also references the binary property reference. Such a node state is now much 
> heavier than before and can cause OOME.
> This is a clone of OAK-5226, which was supposed to fix the described issue, 
> however it turns out the fix is not sufficient and memory calculation is 
> still incorrect for bundled nodes/properties.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6462) Incorrect memory calculation for bundled node states

2017-07-18 Thread Marcel Reutegger (JIRA)
Marcel Reutegger created OAK-6462:
-

 Summary: Incorrect memory calculation for bundled node states
 Key: OAK-6462
 URL: https://issues.apache.org/jira/browse/OAK-6462
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: core, documentmk
Affects Versions: 1.5.13
Reporter: Marcel Reutegger
Assignee: Chetan Mehrotra
 Fix For: 1.5.15, 1.6.0


OAK-1312 introduced bundling of nodes into a document and enabled the feature 
for nt:file nodes. A DocumentNodeState of type nt:file now has an incorrect 
memory calculation because the node state references a BundlingContext which 
also references the binary property reference. Such a node state is now much 
heavier than before and can cause OOME.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Updated] (OAK-6461) Merge all security related validators into a single hook

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu updated OAK-6461:
--
Attachment: OAK-6461.patch

proposed patch for review (IT tests are still running).
[~anchela] would love to hear your thoughts on this one!

> Merge all security related validators into a single hook
> 
>
> Key: OAK-6461
> URL: https://issues.apache.org/jira/browse/OAK-6461
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core, security
>Reporter: Alex Deparvu
>Assignee: Alex Deparvu
> Attachments: OAK-6461.patch
>
>
> I'd like to see if it's feasible to merge all security related validators 
> into a single hook, instead of a hook per _SecurityConfiguration_.
> Pros
> * all validators will be merged into a single hook, meaning processing will 
> happen via a single diff over the content
> Cons
> * order of hooks will change, there will be commit hooks first, all 
> aggregated validators next and post validation hooks last. I don't think 
> there's any issue with validation itself as all data added by the hooks will 
> be visible to the composite validator.
> This is how the chaining looks like in the current setup:
> {noformat}
> EditorHook : 
> (TokenValidatorProvider),
> VersionablePathHook, 
> EditorHook : 
> (CompositeEditorProvider : ([
> PermissionStoreValidatorProvider, 
> PermissionValidatorProvider, 
> AccessControlValidatorProvider])), 
> EditorHook : 
> (PrivilegeValidatorProvider), 
> EditorHook : 
> (CompositeEditorProvider : ([
> UserValidatorProvider,
> CacheValidatorProvider])),
> PermissionHook, 
> JcrAllCommitHook
> {noformat}
> If we merged them, this is the result:
> {noformat}
> VersionablePathHook, 
> EditorHook : 
> (CompositeEditorProvider : ([
> PermissionStoreValidatorProvider,
> PermissionValidatorProvider,
> AccessControlValidatorProvider, 
> UserValidatorProvider,
> CacheValidatorProvider, 
> PrivilegeValidatorProvider,
> TokenValidatorProvider])),
> PermissionHook, 
> JcrAllCommitHook
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6461) Merge all security related validators into a single hook

2017-07-18 Thread Alex Deparvu (JIRA)
Alex Deparvu created OAK-6461:
-

 Summary: Merge all security related validators into a single hook
 Key: OAK-6461
 URL: https://issues.apache.org/jira/browse/OAK-6461
 Project: Jackrabbit Oak
  Issue Type: Improvement
  Components: core, security
Reporter: Alex Deparvu
Assignee: Alex Deparvu


I'd like to see if it's feasible to merge all security related validators into 
a single hook, instead of a hook per _SecurityConfiguration_.
Pros
* all validators will be merged into a single hook, meaning processing will 
happen via a single diff over the content
Cons
* order of hooks will change, there will be commit hooks first, all aggregated 
validators next and post validation hooks last. I don't think there's any issue 
with validation itself as all data added by the hooks will be visible to the 
composite validator.

This is how the chaining looks like in the current setup:
{noformat}
EditorHook : 
(TokenValidatorProvider),
VersionablePathHook, 
EditorHook : 
(CompositeEditorProvider : ([
PermissionStoreValidatorProvider, 
PermissionValidatorProvider, 
AccessControlValidatorProvider])), 
EditorHook : 
(PrivilegeValidatorProvider), 

EditorHook : 
(CompositeEditorProvider : ([
UserValidatorProvider,
CacheValidatorProvider])),
PermissionHook, 
JcrAllCommitHook
{noformat}

If we merged them, this is the result:
{noformat}
VersionablePathHook, 
EditorHook : 
(CompositeEditorProvider : ([
PermissionStoreValidatorProvider,
PermissionValidatorProvider,
AccessControlValidatorProvider, 
UserValidatorProvider,
CacheValidatorProvider, 
PrivilegeValidatorProvider,
TokenValidatorProvider])),
PermissionHook, 
JcrAllCommitHook
{noformat}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Commented] (OAK-6455) Don't call observer concurrently from the CompositeNodeStore

2017-07-18 Thread JIRA

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

Tomek Rękawek commented on OAK-6455:


So, it seems we'll need the lock after all. Re-introduced merge lock in 
[r1802250|https://svn.apache.org/r1802250].

> Don't call observer concurrently from the CompositeNodeStore
> 
>
> Key: OAK-6455
> URL: https://issues.apache.org/jira/browse/OAK-6455
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite
>Reporter: Tomek Rękawek
> Fix For: 1.8, 1.7.4
>
>
> Per Observer interface
> {noformat}
> However, each observer is
>  * always guaranteed to see a linear sequence of changes. In other words the
>  * method will not be called concurrently from multiple threads and successive
>  * calls represent a linear sequence of repository states, i.e. the root
>  * state passed to a call is guaranteed to represent a repository state
> {noformat}
> Currently concurrent merge would result in concurrent calls to Observer. So 
> that would need to be serialized



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6455) Don't call observer concurrently from the CompositeNodeStore

2017-07-18 Thread JIRA

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

Tomek Rękawek resolved OAK-6455.

   Resolution: Fixed
Fix Version/s: 1.7.4

> Don't call observer concurrently from the CompositeNodeStore
> 
>
> Key: OAK-6455
> URL: https://issues.apache.org/jira/browse/OAK-6455
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: composite
>Reporter: Tomek Rękawek
> Fix For: 1.8, 1.7.4
>
>
> Per Observer interface
> {noformat}
> However, each observer is
>  * always guaranteed to see a linear sequence of changes. In other words the
>  * method will not be called concurrently from multiple threads and successive
>  * calls represent a linear sequence of repository states, i.e. the root
>  * state passed to a call is guaranteed to represent a repository state
> {noformat}
> Currently concurrent merge would result in concurrent calls to Observer. So 
> that would need to be serialized



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Assigned] (OAK-3349) Partial compaction

2017-07-18 Thread Francesco Mari (JIRA)

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

Francesco Mari reassigned OAK-3349:
---

Assignee: Francesco Mari  (was: Michael Dürig)

> Partial compaction
> --
>
> Key: OAK-3349
> URL: https://issues.apache.org/jira/browse/OAK-3349
> Project: Jackrabbit Oak
>  Issue Type: New Feature
>  Components: segment-tar
>Reporter: Michael Dürig
>Assignee: Francesco Mari
>  Labels: compaction, gc, scalability
> Fix For: 1.8, 1.7.4
>
> Attachments: compaction-time.png, cycle-count.png, post-gc-size.png
>
>
> On big repositories compaction can take quite a while to run as it needs to 
> create a full deep copy of the current root node state. For such cases it 
> could be beneficial if we could partially compact the repository thus 
> splitting full compaction over multiple cycles. 
> Partial compaction would run compaction on a sub-tree just like we now run it 
> on the full tree. Afterwards it would create a new root node state by 
> referencing the previous root node state replacing said sub-tree with the 
> compacted one. 
> Todo: Asses feasibility and impact, implement prototype.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Resolved] (OAK-6459) VisibleValidator duplicated in chain for each hierarchy level

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu resolved OAK-6459.
---
Resolution: Fixed

fixed with http://svn.apache.org/viewvc?rev=1802248=rev

> VisibleValidator duplicated in chain for each hierarchy level
> -
>
> Key: OAK-6459
> URL: https://issues.apache.org/jira/browse/OAK-6459
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alexander Klimetschek
>Assignee: Alex Deparvu
>Priority: Minor
> Fix For: 1.7.4
>
>
> VisibleValidator gets chained multiple times, while each one working on the 
> same NodeState will run the exact same check, NodeStateUtils.isHidden(name). 
> One execution should be enough.
> Below stacktrace has 9 instances chained. Code for propertyAdded as in the 
> stacktrace below in 1.4 is 
> [here|https://github.com/apache/jackrabbit-oak/blob/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleValidator.java#L82-L83].
>  
> Also found a similar stacktrace in OAK-6358 with 12 instances.
> This might be a small optimization to make, especially if there are many 
> properties added, and if there is apparently another variable factor in how 
> many instances there are.
> According to [~stillalex]:
> This is directly related to the hierarchy level (so if a change is 5 levels 
> deep, you'll see 5 validators chained there) and the short fix is to fix 
> calls [creating new 
> VisibleValidators|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleValidator.java#L44]
>  to unwrap if needed, like 
> [here|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java#L38].
> {noformat}
> Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: 
> OakAccess: Access denied
>   at 
> org.apache.jackrabbit.oak.security.authorization.permission.PermissionValidator.checkPermissions(PermissionValidator.java:242)
>   at 
> org.apache.jackrabbit.oak.security.authorization.permission.PermissionValidator.propertyAdded(PermissionValidator.java:112)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.CompositeEditor.propertyAdded(CompositeEditor.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyAdded(EditorDiff.java:82)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareProperties(SegmentNodeState.java:593)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:491)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:531)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:584)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:584)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compareBranch(MapRecord.java:561)
>   at 
> 

[jira] [Updated] (OAK-6459) VisibleValidator duplicated in chain for each hierarchy level

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu updated OAK-6459:
--
Fix Version/s: 1.7.4

> VisibleValidator duplicated in chain for each hierarchy level
> -
>
> Key: OAK-6459
> URL: https://issues.apache.org/jira/browse/OAK-6459
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alexander Klimetschek
>Assignee: Alex Deparvu
>Priority: Minor
> Fix For: 1.7.4
>
>
> VisibleValidator gets chained multiple times, while each one working on the 
> same NodeState will run the exact same check, NodeStateUtils.isHidden(name). 
> One execution should be enough.
> Below stacktrace has 9 instances chained. Code for propertyAdded as in the 
> stacktrace below in 1.4 is 
> [here|https://github.com/apache/jackrabbit-oak/blob/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleValidator.java#L82-L83].
>  
> Also found a similar stacktrace in OAK-6358 with 12 instances.
> This might be a small optimization to make, especially if there are many 
> properties added, and if there is apparently another variable factor in how 
> many instances there are.
> According to [~stillalex]:
> This is directly related to the hierarchy level (so if a change is 5 levels 
> deep, you'll see 5 validators chained there) and the short fix is to fix 
> calls [creating new 
> VisibleValidators|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleValidator.java#L44]
>  to unwrap if needed, like 
> [here|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java#L38].
> {noformat}
> Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: 
> OakAccess: Access denied
>   at 
> org.apache.jackrabbit.oak.security.authorization.permission.PermissionValidator.checkPermissions(PermissionValidator.java:242)
>   at 
> org.apache.jackrabbit.oak.security.authorization.permission.PermissionValidator.propertyAdded(PermissionValidator.java:112)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.CompositeEditor.propertyAdded(CompositeEditor.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyAdded(EditorDiff.java:82)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareProperties(SegmentNodeState.java:593)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:491)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:531)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:584)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:584)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compareBranch(MapRecord.java:561)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:466)

[jira] [Assigned] (OAK-6459) VisibleValidator duplicated in chain for each hierarchy level

2017-07-18 Thread Alex Deparvu (JIRA)

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

Alex Deparvu reassigned OAK-6459:
-

   Assignee: Alex Deparvu
   Priority: Minor  (was: Major)
Component/s: core

> VisibleValidator duplicated in chain for each hierarchy level
> -
>
> Key: OAK-6459
> URL: https://issues.apache.org/jira/browse/OAK-6459
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: core
>Reporter: Alexander Klimetschek
>Assignee: Alex Deparvu
>Priority: Minor
>
> VisibleValidator gets chained multiple times, while each one working on the 
> same NodeState will run the exact same check, NodeStateUtils.isHidden(name). 
> One execution should be enough.
> Below stacktrace has 9 instances chained. Code for propertyAdded as in the 
> stacktrace below in 1.4 is 
> [here|https://github.com/apache/jackrabbit-oak/blob/1.4/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleValidator.java#L82-L83].
>  
> Also found a similar stacktrace in OAK-6358 with 12 instances.
> This might be a small optimization to make, especially if there are many 
> properties added, and if there is apparently another variable factor in how 
> many instances there are.
> According to [~stillalex]:
> This is directly related to the hierarchy level (so if a change is 5 levels 
> deep, you'll see 5 validators chained there) and the short fix is to fix 
> calls [creating new 
> VisibleValidators|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleValidator.java#L44]
>  to unwrap if needed, like 
> [here|https://github.com/apache/jackrabbit-oak/blob/trunk/oak-store-spi/src/main/java/org/apache/jackrabbit/oak/spi/commit/VisibleEditor.java#L38].
> {noformat}
> Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: 
> OakAccess: Access denied
>   at 
> org.apache.jackrabbit.oak.security.authorization.permission.PermissionValidator.checkPermissions(PermissionValidator.java:242)
>   at 
> org.apache.jackrabbit.oak.security.authorization.permission.PermissionValidator.propertyAdded(PermissionValidator.java:112)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.VisibleValidator.propertyAdded(VisibleValidator.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.CompositeEditor.propertyAdded(CompositeEditor.java:83)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyAdded(EditorDiff.java:82)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareProperties(SegmentNodeState.java:593)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:491)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:531)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:584)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.SegmentNodeState.compareAgainstBaseState(SegmentNodeState.java:584)
>   at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compare(MapRecord.java:483)
>   at 
> org.apache.jackrabbit.oak.plugins.segment.MapRecord.compareBranch(MapRecord.java:561)
>   at 
> 

[jira] [Comment Edited] (OAK-6409) Oak-run indexing: improved (user friendly) output

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra edited comment on OAK-6409 at 7/18/17 6:22 AM:
---

Done following changes with 1802241,1802242

# oak-run index would now copy a logback-index.xml to work dir (default ./temp) 
and use that for configuring
# Logback is configured to scan the config periodically and if any change is 
done at runtime the changes would be picked up
# By default all info logs would be routed to temp/indexing.log
# In addition logs from following categories would be logged at info level to 
stdout with just time and message
{noformat}
org.apache.jackrabbit.oak.index
org.apache.jackrabbit.oak.plugins.index.importer
org.apache.jackrabbit.oak.plugins.index.IndexUpdate
org.apache.jackrabbit.oak.plugins.index.progress
{noformat}

Some run
{noformat}
Apache Jackrabbit Oak
11:28:41 - Logging configured from 
/mnt/hdd/data/oak/oak-run-indexing/temp/logback-indexing.xml
11:28:41 - Any change in logging config would be picked up
11:28:41 - Logs would be written to temp/indexing.log
/content/oak:index/enablementResourceName => valid
/oak:index/authorizables => valid
/oak:index/commerceLucene => valid
/oak:index/cqMobileAppLucene => valid
/oak:index/cqPageLucene => valid
/oak:index/cqProjectLucene => valid
/oak:index/cqTagLucene => valid
/oak:index/damAssetLucene => valid
/oak:index/lucene => valid
/oak:index/ntBaseLucene => valid
/oak:index/slingeventJob => valid
/oak:index/socialLucene => valid
/oak:index/versionStoreIndex => valid
/oak:index/workflowDataLucene => valid
Index consistency check report stored at 
/mnt/hdd/data/oak/oak-run-indexing/indexing-result/index-consistency-check-report.txt
{noformat}

Sample run for indexing
{noformat}
Apache Jackrabbit Oak 1.8-SNAPSHOT
11:39:50 - Logging configured from 
/mnt/hdd/data/oak/oak-run-indexing/import/temp/logback-indexing.xml
11:39:50 - Any change in logging config would be picked up
11:39:50 - Logs would be written to temp/indexing.log
11:39:51 - Created checkpoint [r15d54512839-0-2] for indexing
11:39:51 - Proceeding to reindex with read only access to NodeStore
11:39:51 - Proceeding to index [/oak:index/lucene] upto checkpoint 
r15d54512839-0-2 {creator=IndexCommand, created=2017-07-18T11:39:51.160+05:30}
11:39:51 - Switched the async lane for indexes at [/oak:index/lucene] to 
offline-reindex-async and marked them for reindex
11:39:51 - Reindexing will be performed for following indexes: 
[/oak:index/lucene]
11:39:51 - Paths to be traversed includedPath : [/], excludedPaths : 
[/etc/workflow/instances, /jcr:system, /etc/replication, /var]
11:39:51 - Estimated node count to be traversed for reindexing under / is 
[131072]
11:40:02 - Reindexing Traversed #1 
/content/mobileapps/we-retail/shell/jcr:content/pge-app/app-content/phonegap/res/screens/android/screen-hdpi-portrait.png/jcr:content
 [999.90 nodes/s, 3599640.00 nodes/hr] (Elapsed 10.76 s, Expected 2.017 min, 
Completed 7.63%)
11:40:02 - /oak:index/lucene => Indexed 1 nodes in 10.75 s ...
11:40:09 - Reindexing Traversed #2 
/content/we-retail/us/en/experience/skiing-deep-powder-in-siberia/jcr:content/root/responsivegrid/content_fragment
 [.06 nodes/s, 3999800.00 nodes/hr] (Elapsed 18.06 s, Expected 99.00 s, 
Completed 15.26%)
11:40:09 - /oak:index/lucene => Indexed 2 nodes in 7.303 s ...
11:40:18 - Reindexing Traversed #3 
/etc/clientlibs/social/thirdparty/ckeditor/plugins/docprops/dialogs/docprops.js 
[1153.81 nodes/s, 4153707.69 nodes/hr] (Elapsed 26.80 s, Expected 87.00 s, 
Completed 22.89%)
11:40:18 - /oak:index/lucene => Indexed 3 nodes in 8.742 s ...
11:40:26 - Reindexing Traversed #4 
/etc/packages/day/cq560/social/calendar/cq-social-calendar-pkg-1.4.33.zip/jcr:content/vlt:definition/filter/f2
 [1176.44 nodes/s, 4235188.24 nodes/hr] (Elapsed 34.57 s, Expected 77.00 s, 
Completed 30.52%)
11:40:26 - /oak:index/lucene => Indexed 4 nodes in 7.771 s ...
11:40:32 - Reindexing Traversed #5 
/libs/cq/contentsync/widgets/source/widgets/ConsolePanel.js/jcr:content 
[1249.98 nodes/s, 4499910.00 nodes/hr] (Elapsed 40.73 s, Expected 64.00 s, 
Completed 38.15%)
11:40:32 - /oak:index/lucene => Indexed 5 nodes in 6.158 s ...
11:40:41 - Reindexing Traversed #6 
/libs/cq/personalization/clientlib/kernel/source/teaser/teaser-client.js/jcr:content
 [1199.98 nodes/s, 4319928.00 nodes/hr] (Elapsed 50.30 s, Expected 59.00 s, 
Completed 45.78%)
11:40:41 - /oak:index/lucene => Indexed 6 nodes in 9.569 s ...
11:40:48 - Reindexing Traversed #7 
/libs/cq/workflow/components/model/step/tab_common/items/timeout/items/timeoutHandler
 [1249.98 nodes/s, 4499935.71 nodes/hr] (Elapsed 56.54 s, Expected 48.00 s, 
Completed 53.41%)
11:40:48 - /oak:index/lucene => Indexed 7 nodes in 6.240 s ...
11:40:55 - Reindexing Traversed #8 

[jira] [Commented] (OAK-6409) Oak-run indexing: improved (user friendly) output

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra commented on OAK-6409:
--

Done following changes with 1802241,1802242

# oak-run index would now copy a logback-index.xml to work dir (default ./temp) 
and use that for configuring
# Logback is configured to scan the config periodically and if any change is 
done at runtime the changes would be picked up
# By default all info logs would be routed to temp/indexing.log
# In addition logs from following categories would be logged at info level to 
stdout with just time and message
{noformat}
org.apache.jackrabbit.oak.index
org.apache.jackrabbit.oak.plugins.index.importer
org.apache.jackrabbit.oak.plugins.index.IndexUpdate
org.apache.jackrabbit.oak.plugins.index.progress
{noformat}

Same run
{noformat}
Apache Jackrabbit Oak
11:28:41 - Logging configured from 
/mnt/hdd/data/oak/oak-run-indexing/temp/logback-indexing.xml
11:28:41 - Any change in logging config would be picked up
11:28:41 - Logs would be written to temp/indexing.log
/content/oak:index/enablementResourceName => valid
/oak:index/authorizables => valid
/oak:index/commerceLucene => valid
/oak:index/cqMobileAppLucene => valid
/oak:index/cqPageLucene => valid
/oak:index/cqProjectLucene => valid
/oak:index/cqTagLucene => valid
/oak:index/damAssetLucene => valid
/oak:index/lucene => valid
/oak:index/ntBaseLucene => valid
/oak:index/slingeventJob => valid
/oak:index/socialLucene => valid
/oak:index/versionStoreIndex => valid
/oak:index/workflowDataLucene => valid
Index consistency check report stored at 
/mnt/hdd/data/oak/oak-run-indexing/indexing-result/index-consistency-check-report.txt
{noformat}

Sample run for indexing
{noformat}
Apache Jackrabbit Oak 1.8-SNAPSHOT
11:39:50 - Logging configured from 
/mnt/hdd/data/oak/oak-run-indexing/import/temp/logback-indexing.xml
11:39:50 - Any change in logging config would be picked up
11:39:50 - Logs would be written to temp/indexing.log
11:39:51 - Created checkpoint [r15d54512839-0-2] for indexing
11:39:51 - Proceeding to reindex with read only access to NodeStore
11:39:51 - Proceeding to index [/oak:index/lucene] upto checkpoint 
r15d54512839-0-2 {creator=IndexCommand, created=2017-07-18T11:39:51.160+05:30}
11:39:51 - Switched the async lane for indexes at [/oak:index/lucene] to 
offline-reindex-async and marked them for reindex
11:39:51 - Reindexing will be performed for following indexes: 
[/oak:index/lucene]
11:39:51 - Paths to be traversed includedPath : [/], excludedPaths : 
[/etc/workflow/instances, /jcr:system, /etc/replication, /var]
11:39:51 - Estimated node count to be traversed for reindexing under / is 
[131072]
11:40:02 - Reindexing Traversed #1 
/content/mobileapps/we-retail/shell/jcr:content/pge-app/app-content/phonegap/res/screens/android/screen-hdpi-portrait.png/jcr:content
 [999.90 nodes/s, 3599640.00 nodes/hr] (Elapsed 10.76 s, Expected 2.017 min, 
Completed 7.63%)
11:40:02 - /oak:index/lucene => Indexed 1 nodes in 10.75 s ...
11:40:09 - Reindexing Traversed #2 
/content/we-retail/us/en/experience/skiing-deep-powder-in-siberia/jcr:content/root/responsivegrid/content_fragment
 [.06 nodes/s, 3999800.00 nodes/hr] (Elapsed 18.06 s, Expected 99.00 s, 
Completed 15.26%)
11:40:09 - /oak:index/lucene => Indexed 2 nodes in 7.303 s ...
11:40:18 - Reindexing Traversed #3 
/etc/clientlibs/social/thirdparty/ckeditor/plugins/docprops/dialogs/docprops.js 
[1153.81 nodes/s, 4153707.69 nodes/hr] (Elapsed 26.80 s, Expected 87.00 s, 
Completed 22.89%)
11:40:18 - /oak:index/lucene => Indexed 3 nodes in 8.742 s ...
11:40:26 - Reindexing Traversed #4 
/etc/packages/day/cq560/social/calendar/cq-social-calendar-pkg-1.4.33.zip/jcr:content/vlt:definition/filter/f2
 [1176.44 nodes/s, 4235188.24 nodes/hr] (Elapsed 34.57 s, Expected 77.00 s, 
Completed 30.52%)
11:40:26 - /oak:index/lucene => Indexed 4 nodes in 7.771 s ...
11:40:32 - Reindexing Traversed #5 
/libs/cq/contentsync/widgets/source/widgets/ConsolePanel.js/jcr:content 
[1249.98 nodes/s, 4499910.00 nodes/hr] (Elapsed 40.73 s, Expected 64.00 s, 
Completed 38.15%)
11:40:32 - /oak:index/lucene => Indexed 5 nodes in 6.158 s ...
11:40:41 - Reindexing Traversed #6 
/libs/cq/personalization/clientlib/kernel/source/teaser/teaser-client.js/jcr:content
 [1199.98 nodes/s, 4319928.00 nodes/hr] (Elapsed 50.30 s, Expected 59.00 s, 
Completed 45.78%)
11:40:41 - /oak:index/lucene => Indexed 6 nodes in 9.569 s ...
11:40:48 - Reindexing Traversed #7 
/libs/cq/workflow/components/model/step/tab_common/items/timeout/items/timeoutHandler
 [1249.98 nodes/s, 4499935.71 nodes/hr] (Elapsed 56.54 s, Expected 48.00 s, 
Completed 53.41%)
11:40:48 - /oak:index/lucene => Indexed 7 nodes in 6.240 s ...
11:40:55 - Reindexing Traversed #8 
/libs/dam/gui/content/assets/moveassetwizard/jcr:content/head [1249.98 nodes/s, 

[jira] [Resolved] (OAK-6341) oak-run redirects reindexing info to STDERR

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra resolved OAK-6341.
--
   Resolution: Fixed
Fix Version/s: 1.7.4

Done as part of OAK-6409. Now logs are routed to stdout

> oak-run redirects reindexing info to STDERR
> ---
>
> Key: OAK-6341
> URL: https://issues.apache.org/jira/browse/OAK-6341
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: lucene, run
>Affects Versions: 1.8, 1.7.1
>Reporter: Paul Chibulcuteanu
>Assignee: Chetan Mehrotra
>Priority: Minor
> Fix For: 1.8, 1.7.4
>
>
> Reindexing run via oak-run tool redirects all the important reindexing 
> information to STDERR.
> This is due to 
> https://github.com/apache/jackrabbit-oak/blob/trunk/oak-run/src/main/resources/logback.xml#L55-L57
> In this particular case, the information should be redirected to STDOUT since 
> it is important information related to reindexing.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Assigned] (OAK-6409) Oak-run indexing: improved (user friendly) output

2017-07-18 Thread Chetan Mehrotra (JIRA)

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

Chetan Mehrotra reassigned OAK-6409:


Assignee: Chetan Mehrotra

> Oak-run indexing: improved (user friendly) output
> -
>
> Key: OAK-6409
> URL: https://issues.apache.org/jira/browse/OAK-6409
> Project: Jackrabbit Oak
>  Issue Type: Improvement
>  Components: indexing
>Reporter: Thomas Mueller
>Assignee: Chetan Mehrotra
> Fix For: 1.8
>
>
> The oak-run indexing (OAK-6081) output should be human readable, and if 
> possible minimal. Detailed output should be written to a log file, but stdout 
> should be easy for a user to understand. For example some header info when 
> starting, where to find the detailed output, then one line every 3 seconds 
> about the progress (in %, number of nodes read, ETA), and when done some info 
> on what to do next.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)