Dinesh Babu | 27 Apr 11:06 2015

RE: Jackrabbit search does not find for umlaut character Ÿ (keyboard shortcut for this character is ALT+0159)


Got more info on this. This looks like a jackrabbit defect.

Jackrabbit search query for exact term which contains the capital umlaut character Ÿ does not work as long
as the term does not start with this letter. Only LIKE search works for this scenario. The lower case ÿ
works fine. All other omlaut characters upper/lower case work fine.

This is the following query that we fire which does not work
SELECT * FROM [pb:community] WHERE ISDESCENDANTNODE('/community') AND ( LOWER([jcr:title]) =
LOWER('umlautŸ' ))

But If I change the query to as below it does work. But we can't do it as we have to do an exact search
SELECT * FROM [pb:community] WHERE ISDESCENDANTNODE('/community') AND ( LOWER([jcr:title]) LIKE
LOWER('%umlautŸ%) )

On further investigation I found that exact search query works if we don't use LOWER in the query . ie.,
SELECT * FROM [pb:community] WHERE ISDESCENDANTNODE('/community') AND ( [jcr:title] = 'umlautŸ' ).

Regards,
Dinesh Babu
From: Dinesh Babu
Sent: 17 April 2015 11:36
To: 'users <at> jackrabbit.apache.org'; 'dev <at> jackrabbit.apache.org'
Subject: Jackrabbit search does not find for umlaut character Ÿ (keyboard shortcut for this character is ALT+0159)

Hi,

I am a newbie here.

Jackrabbit search query for exact term Ÿ does not work. Only LIKE search works for this character
(Continue reading)

Torgeir Veimo | 27 Apr 10:52 2015
Picon

builder must be a org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder

I'm trying to move a repository from tarmk to mongodb, and am using
the oak-run restore command, but am getting an exception;

spazzo:oak-run torgeir$ java -jar ./target/oak-run-1.2.1.jar restore
mongodb://localhost/oak ~/oak-repository-backup-20150427a

Apache Jackrabbit Oak 1.2.1
Exception in thread "main" java.lang.IllegalArgumentException: builder
must be a org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder
at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.asDocumentRootBuilder(DocumentNodeStore.java:2232)
at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1490)
[...]

Looking at the mailing list it might be due to OAK-2049. I've tried
running the node count script in oak console to find the offending
node, but it detects no errors.

http://oak-dev.jackrabbit.apache.narkive.com/KVUViR6K/cannot-backup-and-restore-aem-tar-repository

Are there any other things I need to fix in the repository? I've run
the check, compact and then backup commands on the repository prior to
trying to restore it to mongodb.

--

-- 
-Tor

Ruben Reusser | 22 Apr 15:49 2015

using filevault

Hi,

I am a bit confused on how one would use filevault with jackrabbit

what I did for a (not so) quick test:

- downloaded jackrabbit-standalone-2.10.0.jar (btw: weird that 
Jackrabbit Oak is not available as a war download)
- downloaded the source for filevault (btw: would be nice if this would 
be available as a binary)
- started jackrabbit standalone, confirmed that it works
- ran

vlt export http://localhost:8080/crx / somefolder

to test an export (also switched from /crx to /server, seemed to make 
more sense)

it seems this is not working. Is vault depending on some features that 
are only available in AEM?

Ruben

Harris, Christopher P | 22 Apr 18:27 2015

Should I use JackRabbit?

Hi.

I need help deciding whether I should use a JCR implementation, specifically Jackrabbit or Jackrabbit
Oak.  I've setup and configured my own Apache Archiva instance, which is how I first became familiar
Jackrabbit.  Learning from that experience, I keep thinking that Jackrabbit may fit my needs.

I'm solely building a Java EE 6 web application, whose target platform will be a clustered (2 JVM's) WAS v8.0
environment, that will read my company's organizational hierarchy, hosted on Microsoft MySites
(Sharepoint), into a data store that will be exposed to clients using JAX-RS resources that return JSON. 
Building this hierarchy tree takes quite some time (let's estimate 30-60 minutes), even with employing
queries that return groups of people and multi-threading.  The number of employees is currently around
40,000 - 60,000.  I start from the CEO at the top and move my way down the hierarchy in groups of tiers.

The data will consist mostly of Strings and 1 optional image, depending whether the employee has an image.

I'm currently storing my data in a Map and using Lucene to index the data as a POC.  As you can imagine, the data
returned by my JAX-RS resource is lightning fast.  Since I'm still in the POC phase, I'm currently running
my app on my local, single WAS v8.0.

However, I have some problems, as I'm sure you already are realizing:

1.)    I need the data to persist through app redeployments and restarts.

2.)    Data refreshing will be troublesome.  With the current POC, I would need to create a 2nd in-memory Map to
replace the first.  This scenario might result in a user experiencing a service interruption when
replacing the first Map with the 2nd Map.

Jackrabbit seems like the solution to these issues due to Jackrabbit's ability to store data, to disk or
RDBMS, and MVCC ability.

(Continue reading)

Marcel Reutegger | 22 Apr 15:42 2015
Picon

[ANNOUNCE] Apache Jackrabbit Oak 1.2.1 released

The Apache Jackrabbit community is pleased to announce the release of
Apache Jackrabbit Oak 1.2.1. The release is available for download at:

  http://jackrabbit.apache.org/downloads.html

See the full release notes below for details about this release.

Release Notes -- Apache Jackrabbit Oak -- Version 1.2.1

Introduction
------------

Jackrabbit Oak is a scalable, high-performance hierarchical content
repository designed for use as the foundation of modern world-class
web sites and other demanding content applications.

Apache Jackrabbit Oak 1.2.1 is a patch release that contains fixes and
improvements over Oak 1.2. Jackrabbit Oak 1.2.x releases are considered
stable and targeted for production use.

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

Changes in Oak 1.2.1
--------------------

Improvements

  [OAK-2737] RepositoryUpgrade.copy() should allow custom commit hooks
  [OAK-2738] Possible StackOverflowException with many "or" conditions
(Continue reading)

Davide Giannella | 20 Apr 16:07 2015
Picon

[ANNOUNCE] Apache Jackrabbit Oak 1.0.13 released

The Apache Jackrabbit community is pleased to announce the release of
Apache Jackrabbit Oak 1.0.13. The release is available for download at:

  http://jackrabbit.apache.org/downloads.html

See the full release notes below for details about this release.

Release Notes -- Apache Jackrabbit Oak -- Version 1.0.13

Introduction
------------

Jackrabbit Oak is a scalable, high-performance hierarchical content
repository designed for use as the foundation of modern world-class
web sites and other demanding content applications.

Apache Jackrabbit Oak 1.0.13 is a patch release that contains fixes and
improvements over Oak 1.0. Jackrabbit Oak 1.0.x releases are considered
stable and targeted for production use.

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

Changes in Oak 1.0.13
---------------------

Sub-task

    [OAK-2395] - RDB: MS SQL Server support
    [OAK-2404] - Provide more information in SegmentNotFoundException
(Continue reading)

SCHEDENIG Marian | 20 Apr 13:47 2015

Move, Locks and Transactions

Hi,

 

we have a problem when using locking and the move operation together with JTA transactions.

 

Without transactions, when you create a node, lock it and then move it, the (now nonexistent) source node will no longer be locked, but the target node will be. If the target node should not be locked, we can either unlock the source node before move, or unlock the target node after move. However, this stops working as soon as we start using transactions.

 

In our example code (see below), the following problems occur:

 

a)      If we call unlock on the source node before the move, committing the transaction fails and complains that the target (!) node is not locked

b)      If we call unlock on the target node after the move instead (see commented out line), committing the transaction fails and complains that the target node is not locked

c)       If we don’t call unlock at all, the assertion that tests the lock after the move fails because the target node is locked

 

I’m not sure if we’re doing something wrong, or if this isn’t supposed to work at all (which would be a serious problem for us), or if there’s a bug in the move implementation or the lock manager.

 

----------------------------------------------

Test code:

----------------------------------------------

 

package com.infinica.tests.jackrabbit;

 

import java.io.File;

import java.io.IOException;

 

import javax.jcr.LoginException;

import javax.jcr.Node;

import javax.jcr.Repository;

import javax.jcr.RepositoryException;

import javax.jcr.Session;

import javax.jcr.SimpleCredentials;

import javax.jcr.lock.LockException;

import javax.jcr.lock.LockManager;

import javax.transaction.HeuristicMixedException;

import javax.transaction.HeuristicRollbackException;

import javax.transaction.NotSupportedException;

import javax.transaction.RollbackException;

import javax.transaction.SystemException;

import javax.transaction.xa.XAException;

import javax.transaction.xa.XAResource;

 

import org.apache.geronimo.transaction.manager.GeronimoTransactionManager;

import org.apache.jackrabbit.core.TransientRepository;

import org.junit.After;

import org.junit.Assert;

import org.junit.Before;

import org.junit.Test;

 

public class JackrabbitTransactionTest

{

                public static final String NODE_CONTENT = "content";

                public static final String PROPERTY_DATA = "data";

                private File tempDir;

               

                <at> Before

                public void before() throws IOException

                {

                               tempDir = File.createTempFile("jackrabbit_test", "");

                               tempDir.delete();

                }

               

                <at> After

                public void after()

                {

                               if(tempDir != null)

                               {

                                               delete(tempDir);

                               }

                }

               

                private static void delete(File file)

                {

                               File[] children = file.listFiles();

                              

                               if(children != null)

                               {

                                               for(File child: children)

                                               {

                                                               delete(child);

                                               }

                               }

                              

                               if(!file.delete())

                               {

                                               System.err.println("Could not delete: " + file);

                               }

                }

 

                <at> Test

                public void testMoveAndLock() throws LoginException, RepositoryException, XAException, NotSupportedException, SystemException, IllegalStateException, RollbackException, SecurityException, HeuristicMixedException, HeuristicRollbackException

                {

                               GeronimoTransactionManager tm = new GeronimoTransactionManager();

                              

                               tm.begin();

                              

                               Repository repository = new TransientRepository(tempDir);

                               String token;

                               Session session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));

                               tm.getTransaction().enlistResource((XAResource) session);

                               LockManager lockMan = session.getWorkspace().getLockManager();

                              

                               try

                               {

                                               String user = session.getUserID();

                                               String name = repository.getDescriptor(Repository.REP_NAME_DESC);

                                               System.out.println("Logged in as " + user + " to a " + name + " repository.");

                                              

                                               Node root = session.getRootNode();

                                              

                                               Node folderSrc = createNode(root, "src");

                                               Node fileSrc = createFile(folderSrc, "test.txt", "Test");

                                               System.out.println("Created source file: " + fileSrc.getPath());

                                               session.save();

                                              

                                               token = lockMan.lock("/src/test.txt", false, false, Long.MAX_VALUE, "admin").getLockToken();

                               }

                               finally

                               {

                                               removeLockTokens(lockMan);

                                               tm.commit();

                                               session.logout();

                               }

                              

                               tm.begin();

                               session = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));

                               tm.getTransaction().enlistResource((XAResource) session);

                               lockMan = session.getWorkspace().getLockManager();

                              

                               try

                               {

                                               Node root = session.getRootNode();

                                              

                                               lockMan.addLockToken(token);

                                               lockMan.unlock("/src/test.txt");

                                              

                                               Node folderDest = createNode(root, "dest");

                                               session.move("/src/test.txt", "/dest/test.txt");

                                               session.save();

//                                           lockMan.unlock("/dest/test.txt");

                                              

                                               Assert.assertTrue(root.hasNode("src"));

                                               Assert.assertFalse(root.hasNode("src/test.txt"));

                                              

                                               folderDest = root.getNode(folderDest.getName());

                                               Node fileDest = folderDest.getNode("test.txt");

                                               Assert.assertEquals("Test", getFileStringProperty(fileDest, PROPERTY_DATA));

                                               Assert.assertFalse(lockMan.isLocked(fileDest.getPath()));

                               }

                               finally

                               {

                                               removeLockTokens(lockMan);

                                               tm.commit();

                                               session.logout();

                               }

                }

 

                /**

                * Necessary because of JCR-3438.

                */

                private static void removeLockTokens(LockManager man) throws LockException, RepositoryException

                {

                               if(man == null)

                               {

                                               return;

                               }

                              

                               for(String token: man.getLockTokens())

                               {

                                               man.removeLockToken(token);

                               }

                }

 

                private String getFileStringProperty(Node file, String property) throws RepositoryException

                {

                               Node contentNode = file.getNode(NODE_CONTENT);

                               return contentNode.getProperty(property).getString();

                }

 

                private Node createFile(Node parent, String path, String content) throws RepositoryException

                {

                               Node node = parent.addNode(path);

                               node.addMixin("mix:lockable");

                               Node contentNode = node.addNode(NODE_CONTENT);

                               contentNode.setProperty(PROPERTY_DATA, content);

                               return node;

                }

 

                private static Node createNode(Node parent, String path) throws RepositoryException

                {

                               return parent.addNode(path);

                }

}

 

----------------------------------------------

Maven POM:

----------------------------------------------

 

<project

                xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"

                xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

                <modelVersion>4.0.0</modelVersion>

                <groupId>com.infinica</groupId>

                <artifactId>infinica-jackrabbit-tests</artifactId>

                <name>INFINICA - Jackrabbit test cases</name>

                <version>1.0.0-SNAPSHOT</version>

 

                <dependencies>

                               <dependency>

                                               <groupId>javax.jcr</groupId>

                                               <artifactId>jcr</artifactId>

                                               <version>2.0</version>

                                               <scope>test</scope>

                               </dependency>

 

                               <dependency>

                                               <groupId>org.apache.jackrabbit</groupId>

                                               <artifactId>jackrabbit-core</artifactId>

                                               <version>2.10.0</version>

                                               <scope>test</scope>

                               </dependency>

 

                               <dependency>

                                               <groupId>org.slf4j</groupId>

                                               <artifactId>slf4j-log4j12</artifactId>

                                               <version>1.7.2</version>

                                               <scope>test</scope>

                               </dependency>

 

                               <dependency>

                                               <groupId>junit</groupId>

                                               <artifactId>junit</artifactId>

                                               <version>4.11</version>

                                               <scope>test</scope>

                               </dependency>

               

                               <dependency>

                                               <groupId>org.apache.geronimo.components</groupId>

                                               <artifactId>geronimo-transaction</artifactId>

                                               <version>3.1.1</version>

                                               <scope>test</scope>

                               </dependency>

                </dependencies>

</project>

 

----------------------------------------------

 

Thx,

Marian.

 

--

DI
Marian Schedenig

Senior Developer

 

 

a: Infinica GmbH, Leonard-Bernstein-Straße 10, 1220 Wien, Österreich

e: marian.schedenig <at> infinica.com w: www.infinica.com

t: +43 1 263 12 96

 

Please consider the environment before printing this email

 

Dinesh Babu | 17 Apr 12:36 2015

Jackrabbit search does not find for umlaut character Ÿ (keyboard shortcut for this character is ALT+0159)

Hi,

I am a newbie here.

Jackrabbit search query for exact term Ÿ does not work. Only LIKE search works for this character

This is the following query that we fire which does not work
SELECT * FROM [pb:com] WHERE ISDESCENDANTNODE('/com') AND ( LOWER([jcr:title]) = 'ÿ' )

But If I change the query to as below it does work.
SELECT * FROM [pb:com] WHERE ISDESCENDANTNODE('/com') AND ( LOWER([jcr:title]) LIKE '%ÿ'% )

Does anyone whether this is a jackrabbit defect? I would like to get the exact search work for our development.

Regards,
Dinesh Babu

Pitney Bowes Software
6 Hercules Way, Leavesden Park, Watford, Herts WD25 7GS

________________________________

Dinesh Babu | 17 Apr 12:45 2015

Jackrabbit search does not find node with backslash in its name

Hi,

Jackrabbit search for a node with backslash ("\")  does not work.

This is the following query that we fire which does not work
SELECT * FROM [pb:community] WHERE ISDESCENDANTNODE('/community') AND ( LOWER([jcr:title]) =
'back\slash1' )

Does anyone know how to escape a backslash to get this query working? Commonly used methods in Text or 
ISO9075 does not do the trick.

Regards,
Dinesh Babu

Pitney Bowes Software
6 Hercules Way, Leavesden Park, Watford, Herts WD25 7GS

________________________________

Marcel Reutegger | 14 Apr 10:26 2015
Picon

[ANNOUNCE] Apache Jackrabbit Oak 1.2.0 released

The Apache Jackrabbit community is pleased to announce the release of
Apache Jackrabbit Oak 1.2.0. The release is available for download at:

  http://jackrabbit.apache.org/downloads.html

See the full release notes below for details about this release.

Release Notes -- Apache Jackrabbit Oak -- Version 1.2.0

Introduction
------------

Jackrabbit Oak is a scalable, high-performance hierarchical content
repository designed for use as the foundation of modern world-class
web sites and other demanding content applications.

Jackrabbit Oak 1.2 is an incremental feature release based on and
compatible with earlier stable Jackrabbit Oak 1.x releases.
Jackrabbit Oak 1.2.x releases are considered stable and targeted for
production use.

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

Changes since Oak 1.0.0
-----------------------

New Features

  [OAK-1323] CLONE - XPath queries currently require  <at>  in front of
property names
  [OAK-1522] Provide PojoSR based RepositoryFactory implementation
  [OAK-1529] The storage backends should have an estimate on the
number of nodes below a given path
  [OAK-1658] Similar (rep:similar) support for Solr
  [OAK-1804] TarMK compaction
  [OAK-1805] Debugging console
  [OAK-1849] DataStore GC support for heterogeneous deployments using
a shared datastore
  [OAK-1893] MBean to dump Lucene Index content and related stats
  [OAK-1906] Adding information to a  Standard MBean interface using annotations
  [OAK-1915] TarMK Cold Standby
  [OAK-1922] Introduce Password Expiry With Max Password Age and On First Login
  [OAK-1978] Add path exclusion to JackrabbitEventFilter
  [OAK-1990] Utility js methods to manage Oak data in Mongo
  [OAK-1993] Add command to dump Lucene index in Oak Console
  [OAK-2005] Use separate Lucene index for performing property related queries
  [OAK-2074] _lastRev recovery tool
  [OAK-2138] Alternative implementation of AuthorizableNodeName interface
  [OAK-2191] Persistent cache for the DocumentNodeStore
  [OAK-2220] Support for atomic counters (non-clustered)
  [OAK-2261] Enable support for NodeType based indexing rules
  [OAK-2267] Expose checkpoints through JMX
  [OAK-2268] Support index time Aggregation of repository nodes
  [OAK-2278] Same Lucene index to support both property restrictions
and fulltext constraints
  [OAK-2323] SegmentMK consistency check
  [OAK-2371] Helper class for CI configurations
  [OAK-2399] Custom scorer for modifying score per documents
  [OAK-2504] oak-run debug should list a breakdown of space usage per
record type
  [OAK-2517] Support IS NULL based property restrictions in LucenePropertyIndex
  [OAK-2530] Support IS NULL based property restrictions in the query engine
  [OAK-2721] LogDumper rule to dump logs as part of system out in case
of test failure

Improvements

  [OAK-672]  Avoid JCR APIs calling other JCR APIs
  [OAK-1447] Offline tool to repair MongoMK documents
  [OAK-1452] Expose query plans
  [OAK-1478] allow selecting a nodestore fixture for tests
  [OAK-1500] Verify restore to revision on MongoNS
  [OAK-1561] Implement optimised range queries
  [OAK-1570] Improve perfomances of the OrderedIndex while insert
  [OAK-1609] Configurable property exclusions for SolrIndexEditor and
SolrQueryIndex
  [OAK-1618] Implement noInternal from JackrabbitEventFilter
  [OAK-1645] Route find queries to Mongo secondary in MongoDocumentStore
  [OAK-1666] FileDataStore inUse map causes contention in concurrent env
  [OAK-1669] JCR Event Info should contain NodeType for all Events
  [OAK-1673] FulltextQueryTest coverage for Solr indexer
  [OAK-1681] Clarify contract of NodeBuilder.isReplaced()
  [OAK-1683] Remove dependency of DocumentStore to MicroKernelException
  [OAK-1685] BlobStore: improve code readability
  [OAK-1691] Use in-memory DB for DOCUMENT_JDBC fixture
  [OAK-1694] Use known.issues instead of commented tests
  [OAK-1706] Add RestrictionProvider#getPattern(String,Set<Restriction>)
  [OAK-1716] Enable passing of a execution context to runTest in multi
threaded runs
  [OAK-1718] Avoid expanding empty property restrictions if not needed
  [OAK-1721] register ContentRepository to whiteboard
  [OAK-1723] Text content should not be stored as part of Index data
  [OAK-1724] Enable copying of Lucene index to local file system for
read queries
  [OAK-1725] Improved SolrCursor support for paged results
  [OAK-1733] Consolidate Mongo client connection creation logic
  [OAK-1745] OrderedIndex should serve range queries regardless of direction
  [OAK-1754] add docu how to connect to Mongo w/ credentials
  [OAK-1771] Avoid lock contention in Tracker.getServices()
  [OAK-1775] Avoid lock contention in IndexTracker.getIndexNode()
  [OAK-1790] Import of compressed wikipedia dump
  [OAK-1791] Clean up dangling references to previous documents
  [OAK-1794] Keep commit info for local changes in main document
  [OAK-1796] Update Mongo Java Driver version to 2.12
  [OAK-1800] Configurable number of rows in SolrQueryIndex
  [OAK-1815] Don't create default (Scheduled)Executor when respective
instance is supplied
  [OAK-1820] Set _lastRev on insert when new node is also commit root
  [OAK-1821] Full text expression with * as 'field' should expand to
the 'catch all' field
  [OAK-1830] DocumentNodeStore code robustness when persistence inconsistent
  [OAK-1835] Solr index support for relative properties
  [OAK-1847] Use SegmentMK for testing where possible
  [OAK-1850] Dump help details for various command supported by oak-run
  [OAK-1852] DocumentStore API: improve documentation of keys
  [OAK-1857] Support collection object conversion to String[] in
ConfigurationParameters
  [OAK-1858] Segment Explorer
  [OAK-1861] Limit memory usage of DocumentNodeStore.readChildren()
  [OAK-1862] Checkpoints release method
  [OAK-1863] Generic operation tasks should be able to return specific results
  [OAK-1867] Optimize SegmentWriter.prepare()
  [OAK-1875] Configurable filter restrictions to be used in SolrQueryIndex
  [OAK-1876] oak-run option to do diffs between TarMK revisions
  [OAK-1880] Omit Configuration Retrieval for PreAuthContext
  [OAK-1882] Use config parameters to write token property
  [OAK-1907] Better cost estimates for traversal, property, and ordered indexes
  [OAK-1919] Use 127.0.0.1 as default for MongoDB host
  [OAK-1928] Cleanup test and execution fixtures
  [OAK-1929] MicroKernelServer not usable with user specified
MicroKernel implementation
  [OAK-1934] Optimize MutableTree.orderBefore for the common case
  [OAK-1937] Add progress logs to MarkSweepGarbageCollector
  [OAK-1942] UserAuthentication: enhance login states with relevant exceptions
  [OAK-1945] Unclear NodeStore.merge() contract
  [OAK-1950] Add GlobalNameMapper(NodeState) constructor
  [OAK-1955] oak-run main method should print available run modes
  [OAK-1961] Introduce DocumentStoreException
  [OAK-1965] Support for constraints like: foo = 'X' OR bar = 'Y'
  [OAK-1966] Add Hint for selecting more performant index in
MongoDocumentStore#query
  [OAK-1967] Avoid collision marker update when already present
  [OAK-1983] Query: reduce debug log output
  [OAK-1986] Log index names for which AsyncIndexUpdate would trigger
a full reindex
  [OAK-1987] LuceneIndex should access Lucene Directory if query
involves FullTextSearch for cost calculation
  [OAK-1994] Limit no of children listed with ls command in Oak Console
  [OAK-1997] Improve the message in UniquenessConstraintViolation
exception to provide more details
  [OAK-1999] Query engine is slow when using many "or" constraints
  [OAK-2003] Avoid <p/> in javadoc
  [OAK-2004] Add a way to pause the background async indexer
  [OAK-2007] MongoBlobStore improvements
  [OAK-2009] Add a utility method to create Solr synonym file for node
type expansions
  [OAK-2011] Log read and write operations to different loggers
  [OAK-2013] Add utility class for tracking time spent in the code
  [OAK-2017] Add checkpoint management to oak-run
  [OAK-2018] Query: before throwing "traversed more than x nodes"
exception, log it
  [OAK-2019] Compact only if needed
  [OAK-2025] Make the cache size in MongoBlobStore configurable
  [OAK-2030] Remove ContentRepositoryImpl#getNodeStore
  [OAK-2031] MemoryNodeBuilder#set only works on root builders
  [OAK-2040] Tar compaction: log a warning if there is more than one checkpoint
  [OAK-2041] Checkpoint list command should also provide the checkpoint lifetime
  [OAK-2044] DocumentSplit should allow properties added by persistence
  [OAK-2050] Query engine: disable or restrict built-in full-text engine
  [OAK-2051] Provide option to use  Configuration SPI in JAAS
authentication when running within AppServer
  [OAK-2057] Add timing to OrderedIndex
  [OAK-2060] MBean to provide consolidated cache stats
  [OAK-2061] Oak run debug option to list content from a tar file
  [OAK-2069] Log details of _lastRev recovery
  [OAK-2083] Add metatype info for Document and Segment services
  [OAK-2087] Record time when checpoint is created in SegmentNodeStore
  [OAK-2090] Improve logging in compaction and cleanup operation in SegmentMK
  [OAK-2091] Improve logging in MongoDocumentStore
  [OAK-2094] Oak Upgrade should depend on oak-jcr with a 'test' scope
  [OAK-2100] Change NodeStore#release method to return a boolean
  [OAK-2101] Add test for observation events when renaming a node
  [OAK-2104] IndexStatsMBean should expose the time upto which the
repository state has been indexed
  [OAK-2105] Review padding for blobs collection
  [OAK-2112] DocumentNodeStore: Error calculating the machine id
  [OAK-2115] Turn async indexer checkpoint warning log to debug
  [OAK-2116] Explorer should display the template Id and use it in the
reference tracking report
  [OAK-2119] AggregateIndex should support AdvanceQueryIndex
  [OAK-2120] Simplify BranchStates
  [OAK-2125] Integrate Lucene logging with Slf4j
  [OAK-2128] Scalability benchmarks for search
  [OAK-2131] Reduce usage of _lastRev
  [OAK-2133] Lucene: improved batching and logging
  [OAK-2134] Lucene: not using the path restriction can speed up queries
  [OAK-2143] NodeObservor should catch exception in case event processing
  [OAK-2156] UserAuthentication: Allow Password Change Via
SimpleCredentials Attribute
  [OAK-2158] Fail for ACEs created for the admin principal
  [OAK-2160] mk.getRevisionHistory: clarify since parameter
  [OAK-2161] MicroKernelIT: clean test content
  [OAK-2169] Pluggability of UserAuthenticationFactory
  [OAK-2173] Allow specifying custom attributes in IndexPlan
  [OAK-2175] Support for rep:spellcheck
  [OAK-2176] Support for using query engine for search suggestions
  [OAK-2177] Configurable Analyzer in Lucene index
  [OAK-2178] Lucene index boosting on certain fields
  [OAK-2179] Rep:similar support in Lucene index
  [OAK-2180] Solr default rows number is too high
  [OAK-2181] Create whitelist / blacklist of properties to be indexed
/ filtered for Solr index
  [OAK-2189] TarMK cold standby: update OSGi config example files
  [OAK-2190] Support for like query for string
  [OAK-2194] Print tar file graph in segment explorer
  [OAK-2201] Make blobSize in OakDirectory configurable
  [OAK-2205] Allow native query to be run against specifc property index
  [OAK-2212] Add configuration options for ldap connection pools
  [OAK-2213] The unbound connection pool does not verify if the
connection is still alive
  [OAK-2215] Create default repository in OakRepositoryFactory
  [OAK-2216] LIRS cache: improved concurrency when using the cache loader
  [OAK-2217] Use daemon threads for scheduled executor service in RepositoryImpl
  [OAK-2218] Allow SegmentNodeBuilder to provide child builders of the same type
  [OAK-2221] Log path for text extraction error on the Lucene index
  [OAK-2228] Changing the query traversal limit should affect already
started queries
  [OAK-2229] Provide a way for Index implementation to determine reindex mode
  [OAK-2230] Execution Stats for async indexing
  [OAK-2233] Add UserIdCredentials to Oak user management extension
  [OAK-2234] Support property existence query (for Lucene)
  [OAK-2241] Support native queries for non-full-text indexes
  [OAK-2245] UserImporter should always set the rep:authorizableID
  [OAK-2252] make generic VersionGCSupport perform better
  [OAK-2253] Index node only if configured property changed
  [OAK-2262] Add metadata about the changed value to a
PROPERTY_CHANGED event on a multivalued property
  [OAK-2274] XD Logo for Oak Apache
  [OAK-2287] ConflictHandler for merging jcr:lastModified
  [OAK-2291] Associate user defined values with checkpoint
  [OAK-2292] Use ConcurrentUpdateSolrServer for remote updates
  [OAK-2293] Add checkpoint management for MongoMK
  [OAK-2296] Update sql2.txt test to account for name property
presence in non test nodes
  [OAK-2302] Simplify query debugging with MDC
  [OAK-2303] Add jsr305 annotations to Solr index code
  [OAK-2304] Not log very common queries
  [OAK-2306] Path restriction evaluation support within LucenIndex
  [OAK-2307] Provide API to create Tree from NodeState
  [OAK-2309] Persistent cache: config option for autoCompact
  [OAK-2313] Better handling for external binaries in the segment explorer
  [OAK-2314] Mark checkpoints with relevant metadata
  [OAK-2321] Provide details in log when reindexing is completed by
AsyncIndexUpdate
  [OAK-2324] Remove dependency to MapDB
  [OAK-2325] Remove option to disable background operations
  [OAK-2326] Debug logging for merge failures
  [OAK-2333] SegmentMK startup slow with large journals
  [OAK-2334] Inspect any revision with SegmentMK explorer
  [OAK-2340] LucenePropertyIndex should support pure nodeType based query
  [OAK-2341] Use approx counters property index costs even when path
restriction is available
  [OAK-2342] Clean up collision markers
  [OAK-2344] Permission validation with Node.setPrimaryType
  [OAK-2348] Pass over name and definitions to StoreStrategy.update
  [OAK-2350] Improve performance of user query with scope set
  [OAK-2351] Property name regex should only be applied on property name
  [OAK-2361] MBean to expose DocumentNodeStore runtime state
  [OAK-2362] Remove entryCount from NodeType Index
  [OAK-2365] Refactor node store tests
  [OAK-2372] TARMK Cold Standby improve test cases for FSDS mirroring
  [OAK-2373] Move FixturesHelper into common
  [OAK-2378] add a oak-run command to delete the index data in case of
inconsistencies
  [OAK-2385] Abstract over repository creating in tests
  [OAK-2387] Simplify injection of conflict handlers
  [OAK-2390] Replace usages of Immutable* with factory calls
  [OAK-2391] Provide API to create Tree from NodeBuilder
  [OAK-2393] Change default blob size to around 1 MB in OakDirectory
  [OAK-2398] TarMk Cold Standby add metatype info for
'standby.readtimeout' property
  [OAK-2406] Add RootFactory.createSystemRoot
  [OAK-2407] Auto-refresh sessions on revision gc
  [OAK-2413] Clarify Editor.childNodeChanged()
  [OAK-2415] Improve logging in repository migration in upgrade
  [OAK-2422] Improve logging in Lucene indexer
  [OAK-2432] Allow querying on jcr:primaryType property if that
property is indexed
  [OAK-2444] Enable the persistent cache by default
  [OAK-2448] Do not create nodeChildren cache entry for leaf
  [OAK-2451] Avoid clean up in XmlImportTest benchmark
  [OAK-2452] Avoid lookup of conflicting node with
ImportUUIDBehavior.IMPORT_UUID_CREATE_NEW
  [OAK-2453] Move MongoDiffCache to mongo package
  [OAK-2454] Upgrade: reduce implementation dependency
  [OAK-2459] Pre-populate version storage with intermediate nodes
  [OAK-2462] reduce code duplication between
Utils.getSelectedDocuments and MissingLastRevCandidateIterator
  [OAK-2463] Provide support for providing custom Tika config
  [OAK-2464] Optimize read of known non-existing children
  [OAK-2468] Index binary only if some Tika parser can support the
binaries mimeType
  [OAK-2469] Restrict the maximum number of terms that will be indexed
for a single field
  [OAK-2470] Support for maxExtractLength while parsing binaries with Tika
  [OAK-2471] Include index name in the log from LuceneIndexEditor
  [OAK-2483] Avoid building suggest/spellcheck dictionary at query time
  [OAK-2485] Add validating commit hook for login tokens
  [OAK-2487] DataStoreBlobStore: Merge test
MongoDataStoreBlobStoreTest into DataStoreBlobStoreTest
  [OAK-2490] Make it possible to use the PermissionProvider from
within query indexes
  [OAK-2491] Improve OAK-2465 avoiding ArithmeticException altogether
  [OAK-2499] Expose mongo and db versions for reporting purposes
  [OAK-2500] checkDeepHistory/fixDeepHistory/prepareDeepHistory for oak-mongo.js
  [OAK-2501] add more trace-logging to mongoMk to debug performance issues
  [OAK-2516] Add user information in audit events in oak
  [OAK-2519] remove CachingDocumentStore interface
  [OAK-2523] Provide a default Tika Config similar to JR2 config
  [OAK-2527] Update SegmentMK header format definition
  [OAK-2529] Index usage for "not equals" conditions
  [OAK-2534] Add missing Apache Jackrabbit qualifiers to OSGi services metatype
  [OAK-2537] Support using Solr index for sorted queries
  [OAK-2542] Update RecordUsageAnalyser to reflect changes in segment format
  [OAK-2546] allow configuring subcaches of documentnodestore individually
  [OAK-2548] Spellcheck/suggest queries should return no results if no
index can handle them
  [OAK-2553] Add builder to file store
  [OAK-2554] Make AbstractServiceTracker.stop() idempotent
  [OAK-2561] Add option to oak-run check runmode to check consistency
of binary properties
  [OAK-2563] Cleanup and document security related error codes
  [OAK-2570] Open indexes in IndexTracker non blocking way
  [OAK-2571] Protect the persistent cache against Thread.interrupt
  [OAK-2572] Include cache invalidation stats in logs related to
background operations
  [OAK-2574] Update mongo-java-driver to 2.13.0
  [OAK-2579] RepositoryManager must not register WhiteboardExecutor with Oak
  [OAK-2585] Set pauseCompaction default to false
  [OAK-2587] observation processing too eager/unfair under load
  [OAK-2589] Provide progress indication when reindexing is being peformed
  [OAK-2590] IndexCopier Error occurred while removing deleted files from Local
  [OAK-2591] Invoke indexUpdate only when new Document are added in
LuceneIndexEditor
  [OAK-2595] High memory consumption of CompactionGainEstimate
  [OAK-2596] more (jmx) instrumentation for observation queue
  [OAK-2597] expose mongo's clusterNodes info more prominently
  [OAK-2601] PerfLogger for NodeObserver.contentChanged()
  [OAK-2602] [Solr] Cost calculation takes time with solr pings even
when not fulfilling query
  [OAK-2608] Avoid indexing user/group/uuid props by default
  [OAK-2614] Timeout for MongoDB query
  [OAK-2624] Move out non essential task processing from
DocumentNodeStore background thread
  [OAK-2633] Log document as debug message on conflict
  [OAK-2638] Use message from causing exception in
DocumentStoreException.convert()
  [OAK-2645] Remove DOCUMENT_MK fixture (and related)
  [OAK-2654] SegmentIdTable too eager to refresh
  [OAK-2668] Ability to disable index hints for MongoDB
  [OAK-2669] Use Consolidated diff for local changes with persistent
cache to avoid calculating diff again
  [OAK-2671] Persistent cache: use different files in tests
  [OAK-2680] Report a full observation queue situation to the logfile
  [OAK-2692] Add description annotation to
RepositoryManagementMBean#startDataStoreGC
  [OAK-2708] Enable CopyOnRead feature for Lucene indexes by default

Bug fixes

  [OAK-203]  Basic same name sibling support
  [OAK-1267] Failure in ObservationRefreshTest
  [OAK-1385] Occasional ConcurrentFileOperationsTest failure
  [OAK-1414] Copying a large subtrees does not scale as expected in
the number of copied nodes on document node stores
  [OAK-1462] Aggregate Index isn't usable in an osgi environment
  [OAK-1472] ConcurrentAddReferenceTest#addReferences still fails
  [OAK-1488] ConcurrentAddRemoveIT, ConcurrentAddIT test failures
  [OAK-1491] ObservationTest failure on Windows
  [OAK-1589] MongoDocumentStore fails to report error for keys that are too long
  [OAK-1626] RDBBlobStoreTest fails occasionally
  [OAK-1641] Mongo: Un-/CheckedExecutionException on replica-primary crash
  [OAK-1674] Node isNew() is false in case the node is removed and
added in same commit
  [OAK-1676] NodeStoreServices nondeterministic with customBlobStore
  [OAK-1677] Add ConflictHandler/Validator to AbstractSecurityTest
  [OAK-1686] failing test
org.apache.jackrabbit.core.query.VersionStoreQueryTest.testCheckin
  [OAK-1688] document atomicity of DS.update(collection, keys, update)
  [OAK-1690] OrderableNodesTest fails with Document_JDBC
  [OAK-1693] "like '%'" does not use an index
  [OAK-1697] Unresolved conflicts in TokenProviderImpl#createToken()
  [OAK-1703] Improve warning logged on concurrent Session access
  [OAK-1707] RestrictionProviderImpl returns empty pattern if all
supported restrictions are set
  [OAK-1709] Diff cache entry too large
  [OAK-1727] Cross foreign cluster revision comparison may be wrong
  [OAK-1747] SolrIndexInitializer async parameter should be boolean
  [OAK-1759] Sporadic IllegalStateException in
AbstractServiceTracker.getServices
  [OAK-1766] Remote Solr server should explicitly handle failures in
connecting to ZK
  [OAK-1768] DocumentNodeBuilder.setChildNode() runs OOM with large tree
  [OAK-1777] Stats for the async indexing don't report 'done' status
when there are no changes
  [OAK-1778] Ordered index: explain plan not implemented
  [OAK-1782] DiffCache not populated after cache miss
  [OAK-1788] ConcurrentConflictTest fails occasionally
  [OAK-1792] Sample descendant field configuration not working for root
  [OAK-1799] Create a benchmark for Full text search with Solr
  [OAK-1810] Incorrect TarMK graph metadata validation
  [OAK-1813] LastRevSingleNodeRecoveryTest fails with Mongo
  [OAK-1814] RevisionComparator my incorrectly report a revision as FUTURE
  [OAK-1816] Oak#createContentRepository never unregisters some of its services
  [OAK-1817] NPE in MarkSweepGarbageCollector.saveBatchToFile during
Datastore GC with FileDataStore
  [OAK-1822] NodeDocument _modified may go back in time
  [OAK-1824] DocumentNodeStore "lease update thread" is not a daemon thread
  [OAK-1826] Empty directories not cleaned up when gc run on FileDataStore
  [OAK-1827] ClassCastException in NodeDocument.split() when collisions detected
  [OAK-1829] IllegalStateException when using "lowerCase"/"lower" on a
array property
  [OAK-1833] Logging in and out many sessions leads to high memory consumption
  [OAK-1840] Failure when setting up DocumentNS fixture
  [OAK-1848] Default sync handler property mapping does not allow
constant properties
  [OAK-1853] Potential NPE in RDBDocumentStore
  [OAK-1855] Travis builds time out
  [OAK-1865] Blob garbage collector deletes referenced blobs for
Jackrabbit 2.x DataStores
  [OAK-1866] SegmentMK: Inefficient flat node comparisons
  [OAK-1869] TarMK: Incorrect tar entry verification in recovery mode
  [OAK-1870] Lucene blob size different in trunk and 1.0 branch
  [OAK-1874] Indexes: re-index automatically when adding an index
  [OAK-1877] Hourly async reindexing on an idle instance
  [OAK-1883] Unnecessary invocations of LastRevRecovery when recovery
already done.
  [OAK-1885] Add restore option for oak-run
  [OAK-1886] OOM in
org.apache.jackrabbit.oak.jcr.OrderedIndexConcurrentClusterIT::deleteConcurrently()
  [OAK-1887] Expose security related configuration options as
component properties
  [OAK-1889] Incomplete component declaration with default action provider
  [OAK-1890] Concurrent System Login: slowdown for high concurrency levels
  [OAK-1892] OrderedIndexConcurrentClusterIT takes too long
  [OAK-1894] PropertyIndex only considers the cost of a single indexed property
  [OAK-1895] ClassCastException can occur if the TraversalIndex is
cheaper than an OrderedIndex (or a different AdvancedQueryIndex impl)
  [OAK-1897] Stale documents in MongoDocumentStore cache
  [OAK-1898] Query: Incorrect cost calculation for traversal
  [OAK-1899] Ordered index fails with old index content
  [OAK-1902] NodeTypeIndex is not conversative enough about its cost
  [OAK-1916] NodeStoreKernel doesn't handle array properties correctly
  [OAK-1917] FileNotFoundException during TarMK GC
  [OAK-1921] Backup: "Attempt to read external blob" error
  [OAK-1926] UnmergedBranch state growing with empty BranchCommit
leading to performance degradation
  [OAK-1927] TarMK compaction delays journal updates
  [OAK-1931] MicroKernel.read() returns negative value
  [OAK-1932] TarMK compaction can create mixed segments
  [OAK-1933] Query: UnsupportedOperationException for some
combinations of "or" and "and" conditions
  [OAK-1935] MAX_QUEUED_CONTINUATIONS feature not working in
EventGenerator class
  [OAK-1936] TarMK compaction map check should switch comparison sides
  [OAK-1943] UserImporter doesn't import protected rep:passwordLastModified
  [OAK-1946] Restore: "Attempt to read external blob" error
  [OAK-1949] UserContext needs to be adjusted to reflect changes made
with OAK-1922
  [OAK-1951] UserContext doesn't reflect new group-member structure
  [OAK-1953] Oak console on MongoMK fails with NPE
  [OAK-1958] Session.logout performance poor
  [OAK-1959] AsyncIndexUpdate unable to cope with missing checkpoint ref
  [OAK-1960] Console in Oak Run does not close the NodeStore upon exit
  [OAK-1964] Performance degradation due to SessionDelegate.WarningLock
  [OAK-1968] Wrong time unit for async index lease time
  [OAK-1969] Duplicate observation events when using JackrabbitEventFilter
  [OAK-1972] Async property index update may fail on DocumentMK with
more than 100 index changes
  [OAK-1973] IndexUpdate traverses the data nodes under index nodes
  [OAK-1975] Wrong values reported for OBSERVATION_EVENT_DURATION
  [OAK-1976] SecurityProvider is not able to add Custom
PrincipalConfiguration in CompositePrincipalConfiguration in OSGI Mode
  [OAK-1977] ContentMirrorStoreStrategy should utilize path
restriction when available
  [OAK-1982] Ordered index must ignore full-text queries
  [OAK-1985] TokenLoginModule can't handle case insensitive userids
  [OAK-1988] Confusing debug message about old revision access
  [OAK-1991] Optimize access to OrderedPropertyIndex
  [OAK-1998] Accessible tree below a non-accessible parent are HiddenTree
  [OAK-2000] Observation events accessibility not checked correctly
  [OAK-2001] TarMk compaction can still cause repository growth
  [OAK-2002] TarMK: FileStore constructor loads all entries in the journal.log
  [OAK-2010] BlobGcMaxAgeInSecs is set to high for MongoBlobStore
  [OAK-2012] oak run benchmark has bad imports
  [OAK-2014] oak-run build fails on windows
  [OAK-2015] PermissionStore doesn't reflect dynamic nature of jcr:all
  [OAK-2020] NodeState view at given version is not stable with
DocumentNodeStore
  [OAK-2021] XPath queries with certain combinations of "or"
conditions don't use an index
  [OAK-2022] XPath queries with "order by" are never converted to "union"
  [OAK-2024] Error when accessing /oak:index/rep:policy/reindex property via JCR
  [OAK-2026] Incompatibility with
PropertyDefinitionImpl#getValueConstraints potentially returning null
values.
  [OAK-2027] SessionMBean fails to render due to NPE in getSessionAttributes
  [OAK-2029] Oak Lucene index doesn't get notified about updates when
index is stored on the file system
  [OAK-2032] Setting a MV Name property does not validate the namespaces
  [OAK-2033] Setting a path property with a value that contains a
unregistered namespace does not fail
  [OAK-2036] getPlan() output for NodeTypeIndex doesn't indicate the
index type used
  [OAK-2038] Invalid type error while importing DocView xml data
  [OAK-2039] SegmentNodeStore might not create a checkpoint
  [OAK-2042] TarMK CompactionMap should include more nodes
  [OAK-2047] Missing privileges after repository upgrade
  [OAK-2048] oak-solr-osgi uses wrong version of spatial4j
  [OAK-2049] ArrayIndexOutOfBoundsException in Segment.getRefId()
  [OAK-2052] Node.setProperty(String, Value) fails for binary non ValueImpls
  [OAK-2053] Excessive memory usage with Oracle Java 6
  [OAK-2056] Optimize orderings by date fields
  [OAK-2058] Hard-coded write concern
  [OAK-2059] Reindexing can include hidden nodes in the index
  [OAK-2062] Range queries and relative properties resultset should be
consistent with JR2
  [OAK-2070] Segment corruption
  [OAK-2071] ImporterImpl does not convert JCR paths to Oak paths
  [OAK-2073] Prevent against integer overflow in compaction check
  [OAK-2077] Improve the resilence of the OrderedIndex for dangling links
  [OAK-2078] Prevent null/empty passwords in ldap provider
  [OAK-2080] BlobSize in OakDirectory differs between trunk and 1.0 branch
  [OAK-2084] The query engine should not return hidden nodes
  [OAK-2088] AsyncIndexUpdate can leave orphaned checkpoint in case of
abrupt shutdown
  [OAK-2093] RDBBlobStore failure because of missing lastmod column on
datastore_data table
  [OAK-2095] ClassCastException in NodeDocument
  [OAK-2099] AIOOBE in Segment#toString
  [OAK-2102] Oak-run add option to remove all unreferenced checkpoints
  [OAK-2107] Remove the MongoGridFSBlobStore implementation
  [OAK-2111] Rename FileStoreCorruptException to
SegmentNotFoundException and update the NodeStore contract
  [OAK-2117] Reindex removes all nodes under index definition node
  [OAK-2118] Aggregation cursor introduces doubles in the result set
  [OAK-2123] Tests do not tear down repository completely
  [OAK-2127] Long running merge may block other commits
  [OAK-2132] BackgroundWriteTest uses relative paths
  [OAK-2139] SegmentExplorer better binary display
  [OAK-2140] Segment Compactor will not compact binaries > 16k
  [OAK-2142] Possibility of numeric overflow in blobCacheSize in DocumentMK
  [OAK-2144] Intermittent Node not found at given revision with
DocumentNodeStore
  [OAK-2145] TarMK cold standby: file handle leak
  [OAK-2146] empty resultset for PropertyIndex and multi-value
properties with mixed OR+AND
  [OAK-2147] [Ordered Index] Indexing on large content is slow
  [OAK-2148] SegmentExplorer display in memory references to tar files
  [OAK-2150] TarMK cold standby: logs are too verbose
  [OAK-2151] DocumentNodeStore does not detect hierarchy conflict
  [OAK-2152] Ignore maven-javadoc-plugin -Xdoclint:none option
  [OAK-2153] Disable TokenAuthenticationTest#tokenCreationWithPreAuth
  [OAK-2157] Better error message for getPrimaryItem
  [OAK-2163] Oak-run "checkpoint" and "backup" don't use memory mapped files
  [OAK-2164] Only enforce uniqueness of jcr:uuid for referenceable nodes
  [OAK-2166] CacheConsistencyTest may fail with IllegalStateException
  [OAK-2167] Last revision recover incomplete
  [OAK-2174] Non-blocking reindexing doesn't finish properly
  [OAK-2186] Change Password On First Login: Wrong Config Property Description
  [OAK-2188] Add/remove version label fails with restricted access on
/jcr:system
  [OAK-2192] Concurrent commit during compaction results in mixed segments
  [OAK-2195] Repository upgrade does not correctly update jcr:all
aggregate privileges and bits
  [OAK-2197] Node.getReferences throws IllegalArgumentException
  [OAK-2202] OrderedIndex should not return the whole index on
property=$value statement
  [OAK-2203] Full reindexing is triggered when the IndexEditor is missing
  [OAK-2219] Ordered index does not return relative properties for
un-restricted indexes
  [OAK-2224] Increase the threshold for warning in PathIterator
  [OAK-2225] MultipleMoveTest doesn't restore ACEs properly causing
later tests to fail
  [OAK-2226] Aggregate Lucene no results for multiple jcr:contains
  [OAK-2227] Increase package export on
org.apache.jackrabbit.oak.plugins.segment
  [OAK-2232] External events incomplete
  [OAK-2235] Lucene index not created if no node is indexed
  [OAK-2237] NodeStoreKernel.getNodes throws when passing filter=""
  [OAK-2238] Session.getItem violates JCR Spec
  [OAK-2243] User Query: Condition 'nameMatches' ignores authorizable id
  [OAK-2246] UUID collision check is not does not work in transient space
  [OAK-2248] IndexOutOfBoundsException in
o.a.j.o.scalability.ScalabilityNodeRelationshipSuite
  [OAK-2249] Query with mixed full-text, "and", "or" conditions fails
  [OAK-2250] Lucene Index property definition is ignored if its not in
includePropertyNames config
  [OAK-2254] Observation events accessibility check should respect
session refresh settings
  [OAK-2255] PermissionStoreImpl refresh root on flush
  [OAK-2256] MemoryNodeBuilder NPE on base() following root refresh
  [OAK-2259] SegmentBlob equals check should verify compaction in both
directions
  [OAK-2260] TarMK Cold Standby can corrupt bulk segments
  [OAK-2266] UserQueryManager: Sort Ignore Case Reversed
  [OAK-2271] Compaction estimation time should not depend on number of
checkpoints
  [OAK-2275] mvn site and site-deploy does not work as expected
  [OAK-2285] Builder does not exist error during async index update
  [OAK-2288] DocumentNS may expose branch commit on earlier revision
  [OAK-2289] Async indexer checkpoints not cleaned up under heavy load
  [OAK-2294] Corrupt repository after concurrent version operations
  [OAK-2295] Using "order by jcr:score" slows down queries by a few
orders of magnitude
  [OAK-2297] Update for absent document may throw NPE
  [OAK-2299] oak.removeDescendantsAndSelf() does not remove
descendants with long paths
  [OAK-2301] QueryEngine should not tokenize fulltext expression by default
  [OAK-2308] Incorrect recovery of _lastRev for branch commit
  [OAK-2311] Released checkpoint can still be retrieved
  [OAK-2312] NodeStoreTest.moveToDescendant fails on MemoryNodeStore
  [OAK-2315] Index cost is sometimes negative
  [OAK-2317] UserValidator: Detect nested authorizables introduced by
change of primary type
  [OAK-2318] DocumentNodeStore.diffManyChildren() reads too many nodes
  [OAK-2319] UserProvider does not install autocreated items
  [OAK-2320] Wrong optimization for joins with ISDESCENDANTNODE conditions
  [OAK-2322] Compaction estimation includes all data segments
  [OAK-2327] DataStoreBlobStore should log exception thrown while
reading inputstream
  [OAK-2328] add logging in OrderedContentMirrorStorateStrategy for
better investigation
  [OAK-2330] Field boost not working if the property for indexing is
picked using aggregate index rules
  [OAK-2332] LIRS cache: deadlock if a value loader access the cache
  [OAK-2335] IndexPlanner does not return plan for mixin based queries
  [OAK-2336] NodeDocument.getNodeAtRevision() may read too many revisions
  [OAK-2343] Wrong handling of InterruptedException in BackgroundThread
  [OAK-2345] Diff reads too many nodes
  [OAK-2346] InitializerTest.testInitializerMongoWithoutInitialContent() fails
  [OAK-2347] TarMK Cold Standby FSDS mirroring
  [OAK-2354] Support comments anywhere in a SQL-2 statement
  [OAK-2355] TarMK Cold Standby expose standby read timeout value
  [OAK-2356] Logic for writing properties in SegmentWriter.writeNode looks off
  [OAK-2359] read is inefficient when there are many split documents
  [OAK-2363] NPE in DocumentNodeStore#retrieve for non existing checkpoint
  [OAK-2366] Cleanup org.apache.jackrabbit.oak.kernel package
  [OAK-2367] Importing a group with random node name and members fails.
  [OAK-2368] Property index: setting declaringNodeTypes to an empty
array can break queries
  [OAK-2369] DataStoreWrapperBackend not updated to latest extensions
added to Backend interface
  [OAK-2370] o.a.j.o.plugins.segment.HeavyWriteIT fails on travis
(exit code 137)
  [OAK-2375] Sporadic test failure of HeavyWriteIT.heavyWrite on Travis
  [OAK-2380] SegmentReferenceLimitTestIT does not close FileStore
  [OAK-2383] ConcurrentAddNodesClusterIT does not close sessions
  [OAK-2384] SegmentNotFoundException when keeping JCR Value references
  [OAK-2386] AnnotatingConflictHandler: jcr:primaryType must be of type Name
  [OAK-2388] Possibility of overflow in file length calculation
  [OAK-2389] issues with JsopBuilder.encode and .escape
  [OAK-2394] Clarify handling of hidden items in ImmutableTree
  [OAK-2396] TarMk Cold Standby reduce verbosity of server errors on
client timeouts
  [OAK-2402] oak-lucene fails to start in OSGi
  [OAK-2409] Invalid cast being performed in BlobStoreFixture
  [OAK-2411] Upgrade may fail with constraint exception
  [OAK-2418] int overflow with orderby causing huge slowdown
  [OAK-2420] DocumentNodeStore revision GC may lead to NPE
  [OAK-2425] DefaultSolrServerProvider should use ConcurrentUpdateSS
for indexing
  [OAK-2426] [LucenePropertyIndex] full-text search on first level
relative node returns no result
  [OAK-2427] XPath to SQL-2 conversion fails due to escaping error
  [OAK-2429] MissingIndexProviderStrategy too eager to set the reindex flag
  [OAK-2430] TARMK Cold Standby size increase due to checkpoints copy
  [OAK-2433] IllegalStateException for ValueMap on _revisions
  [OAK-2434] Lucene AND query with a complex OR phrase returns incorrect result
  [OAK-2435] UpdateOp.Key.equals() incorrect
  [OAK-2436] LucenePropertyIndex throws IllegalStateException: No
query created for filter when using order by jcr:score
  [OAK-2439] IndexPlanner returning plan for queries involving jcr:score
  [OAK-2441] Regression with Node.getPrimaryNodeType and
getMixinNodeTypes wrt Jackrabbit 2.x
  [OAK-2442] NoSuchElementException thrown by NodeDocument
  [OAK-2449] offline compaction (via oak-run) broken
  [OAK-2450] MongoDocumentStore fails for DELETED_ONCE indexed property
  [OAK-2465] Long overflow in PermissionEntryProviderImpl
  [OAK-2475] Query Filter looses property constraints for multiple and
conditions for same property
  [OAK-2482] oak-mongo.js does not escape special characters for
regular expressions
  [OAK-2486] TokenProviderImpl.createToken should always create valid node
  [OAK-2488] Node.getMixinNodeTypes can revive deleted node mixins
  [OAK-2489] Remove useless configPath in embedded SolrServer provider
  [OAK-2493] DataStore GC: Fix incorrect tests
  [OAK-2497] Range query with incorrectly formatted date
  [OAK-2503] DataStore: Cleanup tests
  [OAK-2508] ACL filtering on spellchecks
  [OAK-2513] algorithm with O(n!) in mongoMk rebase - not finishing in years
  [OAK-2515] SolrQueryIndex blindly executes a 2nd query to check
there are no more results
  [OAK-2521] SegmentDataStoreBlobGCTest failing at some places
  [OAK-2524] Error while configuring analyzer by composition
  [OAK-2525] SharedDataStoreUtilsTest failing on travis
  [OAK-2528] Entries in _commitRoot not purged
  [OAK-2531] Suggest field doesn't get stored if it has only one value
  [OAK-2535] TARMK Cold Standby allow cleanup on standby instance
  [OAK-2536] OakSolrConfigurationProviderService used.properties
initialization fails
  [OAK-2540] Session operations null check
  [OAK-2541] TARMK Cold Standby marks the sync as stopped on first error
  [OAK-2549] Persistent Cache: support append-only mode
  [OAK-2557] VersionGC uses way too much memory if there is a large
pile of garbage
  [OAK-2558] Wrong interpretation of SegmentNodeStoreService
configuration values
  [OAK-2559] Lucene index rules should be case insensitive
  [OAK-2562] DiffCache is inefficient
  [OAK-2566] PropertyRestriction.isNotNullRestriction does not take
"list" into account
  [OAK-2567] AsyncIndex should update the run status after the merge
has completed
  [OAK-2576] ServiceEvent on each session login/logout
  [OAK-2577] LuceneSupportTest fails
  [OAK-2582] RDB: improve memory cache handling
  [OAK-2584] Row estimator should have a threshold
  [OAK-2588] MultiDocumentStoreTest.testInvalidateCache failing for Mongo
  [OAK-2603] Failure in one of the batch in VersionGC might lead to
orphaned nodes
  [OAK-2605] Support for additional encodings needed in ReversedLinesFileReader
  [OAK-2607] OakSolrConfigurationProviderService wrongly uses
ignoredProperties for usedProperties
  [OAK-2611] Lucene suggester should only be updated if the index is
used for suggestions
  [OAK-2612] Findbugs plugin version should depend on JDK version
  [OAK-2615] oak-pojosr tests fail
  [OAK-2616] GCMonitorMBean#getRepositorySize reports incorrect values
  [OAK-2639] Incorrect check for log level in PerfLogger
  [OAK-2640] export org.apache.jackrabbit.oak.plugins.atomic
  [OAK-2642] DocumentNodeStore.dispose() may leave repository in an
inconsistent state
  [OAK-2648] ObservationTest.observationDispose() restarts repository
after test finished
  [OAK-2649] IndexCopier might create empty files in case of error
occuring while copying
  [OAK-2658] Test failures in TarMK standby: Address already in use
  [OAK-2659] Failed expectations in TarMK standby tests
  [OAK-2661] Glob restriction test failures on Jenkins
  [OAK-2666] LMSEstimator update resetting weights
  [OAK-2670] Online Backup of segment store fails on Windows because
the journal file is locked exclusively.
  [OAK-2672]  Possible null pointer dereferences in ExternalLoginModule
  [OAK-2691] Blob GC throws NPE
  [OAK-2694] Avoid unneeded unboxing in PropertiesUtil
  [OAK-2695] DocumentNodeStore.dispatch() may pass null to NodeStateDiff
  [OAK-2704] ConcurrentAddIT occasionally fail with OakMerge0001
  [OAK-2709] Misleading log message from IndexCopier
  [OAK-2715] ObservationTest benchmark logs warnings about IllegalStateException
  [OAK-2716] Background operation lock not released when
DocumentNodeStore is closed
  [OAK-2718] NodeStateSolrServersObserver performs complete diff
synchronously causing slowness in dispatch
  [OAK-2720] Misleading traversal warning message while performing query
  [OAK-2725] Wrong indexed query estimates exceed more than double the
actual index entries

Tasks

  [OAK-1455] document oak:unstructured performance advantages
  [OAK-1533] RdbDocumentStore should use a connection pool
  [OAK-1536] Add configuration for baselining-maven-plugin
  [OAK-1678] document atomicity of DS.remove(collection, keys)
  [OAK-1702] Create a benchmark for Full text search
  [OAK-1785] Upgrade HttClient version in oak-solr-osgi
  [OAK-1803] Drop oak-mk-perf
  [OAK-1896] Move JR2 specific logic from oak-run to separate module
  [OAK-2034] Update parent pom.xml to latest 2.9 release
  [OAK-2054] MissingLastRevSeeker optimized only for MongoDS
  [OAK-2079] Refactor BlobStore creation logic in a BlobStoreFixture
  [OAK-2082] Analyze repository growth with Lucene index on SegmentMk
  [OAK-2085] Move CacheStats humanReadableByteCount to Oak Commons IOUtils
  [OAK-2168] Make SolrIndex implement AdvanceQueryIndex
  [OAK-2170] Oak 1.1.x : Document new features in security area
  [OAK-2184] Release 1.1.1
  [OAK-2208] MissingLastRevSeeker non MongoDS may fail with OOM
  [OAK-2352] Release oak-run as part of Oak release
  [OAK-2431] Avoid wrapping of LuceneIndexProvider with
AggregateIndexProvider in tests
  [OAK-2438] Evaluate support for must(must_not(x)) query with Lucene
  [OAK-2578] Add Sling OSGi Mocks to parent pom
  [OAK-2583] Use PerfLogger in DocumentNodeStoreBranch
  [OAK-2625] Copy Jackrabbit 2 S3 related classes
  [OAK-2632] Upgrade Jackrabbit dependency to 2.10.0
  [OAK-2653] Deprecate ordered index
  [OAK-2664] Move ProgressNotificationEditor from upgrade module to core
  [OAK-2693] Retire oak-mk-remote

Sub-tasks

  [OAK-1544] IBM DB2 support
  [OAK-1746] find portable variant of SQL "limit" clause
  [OAK-1806] Benchmark for blob upload and search longevity
  [OAK-1811] enable RDBBlobStore testing for non-H2 databases
  [OAK-1812] RDBBlobStore failures for large blobs
  [OAK-1831] catch ID mismatches in create operations
  [OAK-1832] RdbDocumentStore's create should batch more inserts
  [OAK-1834] DS.query: add tests for query collations, also catch fire
when collation is incorrect
  [OAK-1837] improve error handling for closed RDBBlobStore
  [OAK-1845] Add command to execute script
  [OAK-1851] RDBBlobStore cache nonfunctional
  [OAK-1854] Duplicate revisions
  [OAK-1856] Enable specifying of OSGi config via JSON file and in memory map
  [OAK-1881] support RDB in oak-run benchmarks
  [OAK-1913] RDB: MariaDB (MySQL) support
  [OAK-1914] RDB: Oracle support
  [OAK-1938] avoid use of system dependency for IBM DB2 JDBC JARs
  [OAK-1941] RDB: decide on table layout
  [OAK-2122] Make LuceneIndex implement AdvanceQueryIndex
  [OAK-2129] Benchmark for queries with multiple filters
  [OAK-2130] Benchmark for aggregated queries
  [OAK-2141] Log timing of background operation
  [OAK-2196] Implement sorting based on Lucene sorting
  [OAK-2198] Add support for declaringNodeTypes to only index node
with specific types
  [OAK-2199] Capture performance stats for lucene property indexes
  [OAK-2200] Tune cost calculation for lucene property index
  [OAK-2206] Support lucene property indexes
  [OAK-2210] Add support for customizing the codec
  [OAK-2211] Use Lucene index on non root node
  [OAK-2236] Support queries with only order by specified
  [OAK-2239] Do not wrap LucenePropertyIndex with AggregateIndex
  [OAK-2240] Support for indexing relative properties
  [OAK-2270] Resolve usage of ImmutableTree wrt OSGi constraints
  [OAK-2272] Compatibility support for pre index rule configuration
  [OAK-2273] Export Lucene packages
  [OAK-2276] Support for index format version
  [OAK-2277] Field for analyzed field should use different name
  [OAK-2279] Add testMode support in IndexPlanner
  [OAK-2280] Support path restriction in IndexPlanner
  [OAK-2282] Make current testcases pass with new index implementation
  [OAK-2283] Fix inconsistent handling of includedPropertyTypes
  [OAK-2286] Extract text from binaries in SolrIndexEditor if no
binary specific field is provided
  [OAK-2298] LuceneIndex should provide correct cost based on index size
  [OAK-2329] Use LuceneQuery parser to create query from fulltext string
  [OAK-2337] improve connection handling
  [OAK-2353] Support for "order by jcr:score descending" in lucene
property index
  [OAK-2376] cleanup JSON related code
  [OAK-2377] Change log level in PropertyHistory
  [OAK-2395] RDB: MS SQL Server support
  [OAK-2404] Provide more information in SegmentNotFoundException
  [OAK-2417] reduce primary key size in RDBBlobStore
  [OAK-2421] Clean up orphaned branches
  [OAK-2446] make DELETEDONCE an indexed property
  [OAK-2447] implement DELETEDONCE as indexed property in RDB
  [OAK-2455] Support for invoking suggestor via Query
  [OAK-2456] Periodic update of suggestor index from the full text index
  [OAK-2457] Suggestor support within Oak Lucene
  [OAK-2458] support RDB persistence in oak-run modes console and server
  [OAK-2467] Suggestor support within Oak Solr
  [OAK-2473] ACL checks on suggestions
  [OAK-2494] Shared DataStore GC support for S3DataStore
  [OAK-2495] Shared DataStore GC support for FileDataStore
  [OAK-2514] Shared DataStore GC framework support
  [OAK-2526] Provide support for persisted Solr configuration
  [OAK-2552] Implement MBean monitoring garbage collection
  [OAK-2564] SessionMBean should provide information about pending refresh
  [OAK-2580] Metatype info for DocumentNodeStoreService
  [OAK-2581] Metatype info for SegmentNodeStoreService
  [OAK-2628] RDB: convenience tool for dumping table creation statements
  [OAK-2637] update Postgres JDBC version to 9.4
  [OAK-2673] Resolve add-add, delete-delete merge conflict for empty hidden docs
  [OAK-2698] Deprecate oak-mk-api
  [OAK-2699] Deprecate MicroKernelInputStream
  [OAK-2717] Report maximum observation queue length in
ObservationTest benchmark

Tests

  [OAK-2696] Maven build on travis too verbose

Wishes

  [OAK-1859] Migration from TarMK to MongoMK

In addition to the above-mentioned changes, this release contains
all changes included up to the Apache Jackrabbit Oak 1.0.0 release.

For more detailed information about all the changes in this and other
Oak releases, please see the Oak issue tracker at

  https://issues.apache.org/jira/browse/OAK

Release Contents
----------------

This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.md file for instructions on how to build this release.

The source archive is accompanied by SHA1 and MD5 checksums and a PGP
signature that you can use to verify the authenticity of your download.
The public key used for the PGP signature can be found at
http://www.apache.org/dist/jackrabbit/KEYS.

About Apache Jackrabbit Oak
---------------------------

Jackrabbit Oak is a scalable, high-performance hierarchical content
repository designed for use as the foundation of modern world-class
web sites and other demanding content applications.

The Oak effort is a part of the Apache Jackrabbit project.
Apache Jackrabbit is a project of the Apache Software Foundation.

For more information, visit http://jackrabbit.apache.org/oak

About The Apache Software Foundation
------------------------------------

Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 140 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 3,800+ contributors.

For more information, visit http://www.apache.org/

crm6360 | 11 Apr 02:36 2015
Picon

Jackrabbit subscription event bundles never cleared

I have an event listener subscribed to receive change events from a
jackrabbit 2.6.5 webapp repository.   Memory analysis indicates that the
event bundles are retained by the Subscription
(org.apache.jackrabbit.webdav.jcr.observation.SubscriptionImpl) and over
time and this creates a substantial memory leak in the tomcat container that
is hosting jackrabbit.  I'm not doing anything fancy - the event listener
(client) receives the events but the array list containing the event bundles
never stops growing.  SubscriptionImpl.java never clears the event bundle
list and there is no apparent way for the client to do this.   Below is a
capture of the memory profile indicating the leak:

<http://jackrabbit.510166.n4.nabble.com/file/n4662305/EMAT.png> 

Conceptually I don't understand why there is even a need to retain the event
bundles in an array if they are just being distributed to any subscribers.   

Thanks for any clarification and suggestions on how to proceed.  

-Chris M

--
View this message in context: http://jackrabbit.510166.n4.nabble.com/Jackrabbit-subscription-event-bundles-never-cleared-tp4662305.html
Sent from the Jackrabbit - Users mailing list archive at Nabble.com.


Gmane