[jira] [Reopened] (OAK-10281) Introduce recoveryDelay to ClusterNodeInfo.isRecoveryNeeded
[ https://issues.apache.org/jira/browse/OAK-10281?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Stefan Egli reopened OAK-10281: --- Reopening to suggest [this PR|https://github.com/apache/jackrabbit-oak/pull/1288] to also use an osgi config instead of system properties > Introduce recoveryDelay to ClusterNodeInfo.isRecoveryNeeded > --- > > Key: OAK-10281 > URL: https://issues.apache.org/jira/browse/OAK-10281 > Project: Jackrabbit Oak > Issue Type: Task > Components: documentmk >Reporter: Stefan Egli >Assignee: Stefan Egli >Priority: Major > Fix For: 1.62.0 > > > Oak instances periodically update their leases to signal to peers in the > cluster that they are still alive. A lease that has timed out is hence taken > as indication that the corresponding oak instance has crashed (and not > released the lease). It is also assumed that the corresponding, crashing oak > instance does not do any further write operations after the lease timeout - > as it would otherwise have been alive and updated their lease, which it did > not. > As already reported elsewhere (eg OAK-10254) there is a case where indeed > writes happen later than the lease timeout (aka "late writes"): a writing > thread could go passed the lease check, then a stop-the-world (eg high JVM > GC) could halt the thread for more than the lease timeout (eg 2min), and upon > continuation that writing thread could then send the write operation to the > DocumentStore. > One way to mitigate this late-write risk is to delay the recovery. Ie wait > with doing the LastRevRecovery for eg 10min after a lease failure. That > includes putting the state of the clusterNode back into inactive. > This ticket is about introducing such a recoveryDelay config parameter. -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (OAK-6765) Convert oak-jcr to OSGi R7 annotations
[ https://issues.apache.org/jira/browse/OAK-6765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17811862#comment-17811862 ] Manfred Baedke commented on OAK-6765: - After removing the unused StatisticsProvider reference: {code:java} org.apache.jackrabbit.oak.jcr.osgi.RepositoryManager Declarative Services References referenceIndex - bind = bindReferenceIndex (String) - unbind = unbindReferenceIndex (String) + field = referenceIndex (String) + field-option = replace (String) securityProvider - bind = bindSecurityProvider (String) - unbind = unbindSecurityProvider (String) + field = securityProvider (String) + field-option = replace (String) propertyIndex - bind = bindPropertyIndex (String) - unbind = unbindPropertyIndex (String) + field = propertyIndex (String) + field-option = replace (String) store - bind = bindStore (String) - unbind = unbindStore (String) + field = store (String) + field-option = replace (String) org.apache.jackrabbit.oak.stats.StatisticsProvider - name = org.apache.jackrabbit.oak.stats.StatisticsProvider (String) - interface = org.apache.jackrabbit.oak.stats.StatisticsProvider (String) - cardinality = 1..1 (String) {code} > Convert oak-jcr to OSGi R7 annotations > -- > > Key: OAK-6765 > URL: https://issues.apache.org/jira/browse/OAK-6765 > Project: Jackrabbit Oak > Issue Type: Technical task > Components: jcr >Reporter: Robert Munteanu >Assignee: Manfred Baedke >Priority: Major > -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] (OAK-6765) Convert oak-jcr to OSGi R7 annotations
[ https://issues.apache.org/jira/browse/OAK-6765 ] Manfred Baedke deleted comment on OAK-6765: - was (Author: baedke): After removing the unused reference org.apache.jackrabbit.oak.stats.StatisticsProvider: {code:java} org.apache.jackrabbit.oak.jcr.osgi.RepositoryManager Declarative Services Properties + oak.observation.queue-length = 1 (Integer) + oak.query.fastResultSize = false (Boolean) - Fast query result size = false (Boolean) - Commit rate limiter = false (Boolean) - Observation queue length = 1 (Integer) + oak.observation.limit-commit-rate = false (Boolean) References referenceIndex - bind = bindReferenceIndex (String) - unbind = unbindReferenceIndex (String) + field = referenceIndex (String) + field-option = replace (String) securityProvider - bind = bindSecurityProvider (String) - unbind = unbindSecurityProvider (String) + field = securityProvider (String) + field-option = replace (String) propertyIndex - bind = bindPropertyIndex (String) - unbind = unbindPropertyIndex (String) + field = propertyIndex (String) + field-option = replace (String) store - bind = bindStore (String) - unbind = unbindStore (String) + field = store (String) + field-option = replace (String) org.apache.jackrabbit.oak.stats.StatisticsProvider - name = org.apache.jackrabbit.oak.stats.StatisticsProvider (String) - interface = org.apache.jackrabbit.oak.stats.StatisticsProvider (String) - cardinality = 1..1 (String) {code} > Convert oak-jcr to OSGi R7 annotations > -- > > Key: OAK-6765 > URL: https://issues.apache.org/jira/browse/OAK-6765 > Project: Jackrabbit Oak > Issue Type: Technical task > Components: jcr >Reporter: Robert Munteanu >Assignee: Manfred Baedke >Priority: Major > -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Commented] (OAK-6765) Convert oak-jcr to OSGi R7 annotations
[ https://issues.apache.org/jira/browse/OAK-6765?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17811854#comment-17811854 ] Manfred Baedke commented on OAK-6765: - After removing the unused reference org.apache.jackrabbit.oak.stats.StatisticsProvider: {code:java} org.apache.jackrabbit.oak.jcr.osgi.RepositoryManager Declarative Services Properties + oak.observation.queue-length = 1 (Integer) + oak.query.fastResultSize = false (Boolean) - Fast query result size = false (Boolean) - Commit rate limiter = false (Boolean) - Observation queue length = 1 (Integer) + oak.observation.limit-commit-rate = false (Boolean) References referenceIndex - bind = bindReferenceIndex (String) - unbind = unbindReferenceIndex (String) + field = referenceIndex (String) + field-option = replace (String) securityProvider - bind = bindSecurityProvider (String) - unbind = unbindSecurityProvider (String) + field = securityProvider (String) + field-option = replace (String) propertyIndex - bind = bindPropertyIndex (String) - unbind = unbindPropertyIndex (String) + field = propertyIndex (String) + field-option = replace (String) store - bind = bindStore (String) - unbind = unbindStore (String) + field = store (String) + field-option = replace (String) org.apache.jackrabbit.oak.stats.StatisticsProvider - name = org.apache.jackrabbit.oak.stats.StatisticsProvider (String) - interface = org.apache.jackrabbit.oak.stats.StatisticsProvider (String) - cardinality = 1..1 (String) {code} > Convert oak-jcr to OSGi R7 annotations > -- > > Key: OAK-6765 > URL: https://issues.apache.org/jira/browse/OAK-6765 > Project: Jackrabbit Oak > Issue Type: Technical task > Components: jcr >Reporter: Robert Munteanu >Assignee: Manfred Baedke >Priority: Major > -- This message was sent by Atlassian Jira (v8.20.10#820010)
[jira] [Resolved] (OAK-10608) [Indexing job] Improve regex expression used to download from Mongo to make better used of Mongo indexes
[ https://issues.apache.org/jira/browse/OAK-10608?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nuno Santos resolved OAK-10608. --- Fix Version/s: 1.62.0 Resolution: Done > [Indexing job] Improve regex expression used to download from Mongo to make > better used of Mongo indexes > > > Key: OAK-10608 > URL: https://issues.apache.org/jira/browse/OAK-10608 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: indexing >Reporter: Nuno Santos >Priority: Major > Fix For: 1.62.0 > > > The current regex expression used to filter from Mongo the included/excluded > paths has conditions on both the fields \{{_id}} and \{{_path}}. In most > cases, the \{{_id}} field contains the path of the node, but when the path is > too long, the \{{_id}} is replaced by an hash of the path and the full path > is added to the document as an additional \{{_path}} field. For these cases, > the regex expression must also check the \{{_path}} field. > When running an ordered traversal, we use a Mongo index on \{{(_modified, > _id)}}. So checks on \{{_id}} can be done with just the data retrieved from > the index. But for the check on \{{_path}}, Mongo needs to read the full > document from the column store, which slows down significantly the traversal. > Currently, if \{{_id}} does not match, the regex expression will always check > \{{_path}}, forcing a retrieval of the document. But we only need to check > \{{_path}} if the \{{_id}} is of the form of a long path id, that is, of the > pattern \{{4:h...}}, otherwise, if the _id is not a long path, then if > it does not match the regex, we can be sure that the document is not needed. > The check that \{{_id}} is an hash can be done without retrieving the full > document from the column store, so it will be fast. And in the common case, > the document is not a long path, so this simple check will avoid retrieving > the document from the column store. > This optimization will have a bit impact when the regex expression matches a > small fraction of the repository. In the current implementation, Mongo has to > traverse both the index and the column store for all possible regex filters. > But with the additional check for long paths, Mongo has still to traverse the > full index but it will only retrieve from the column store the documents that > match the filter or the long path documents. And since the index is much > smaller than the column store and can more easily be cached, this will > significantly improve performance. -- This message was sent by Atlassian Jira (v8.20.10#820010)