Release Notes -- Apache Jackrabbit Oak -- Version 0.9

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

Jackrabbit Oak is an effort to implement a scalable and performant
hierarchical content repository 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.

Jackrabbit Oak 0.9 is to alpha-level software. Use at your own risk.

Changes in Oak 0.9
------------------

New features

  [OAK-763] Asynchronous indexing
  [OAK-764] Oak error codes
  [OAK-882] Query: support conditions of type "property in(value1, value2)"
  [OAK-935] Implement JackrabbitRepository

Improvements

  [OAK-64] Privilege Management
  [OAK-90] Implement Principal Management
  [OAK-125] Improved namespace registry
  [OAK-237] Run Jackrabbit query tests
  [OAK-521] Configurable AuthorizableAction(s)
  [OAK-528] Support configurable/pluggable restrictions
  [OAK-641] Improved benchmark tooling
  [OAK-675] Observation generates NPE in an existing EventListener
  [OAK-702] Optimize access to node type information
  [OAK-709] Consider moving permission evaluation to the node state level
  [OAK-711] PermissionValidator: Proper permission handling for jcr:nodetypeManagement privilege
  [OAK-767] Implement Node#removeMixin
  [OAK-772] Session Import
  [OAK-773] Workspace Import
  [OAK-775] Implement backward compatible observation
  [OAK-786] Fall back to pessimism
  [OAK-793] Authentication: Document changes wrt. Jackrabbit
  [OAK-798] Review / refactor TreeImpl and related classes
  [OAK-804] MBean to track observation listeners
  [OAK-819] Lucene fulltext on node not working properly
  [OAK-831] Lucene filesystem based index
  [OAK-836] MongoMk LogWrapper generics
  [OAK-838] Refactor JsopUtil to not duplicate code from KernelNodeState
  [OAK-839] Optimization in the Node#getNodes
  [OAK-843] Optimization in the Node#hasNodes()
  [OAK-844] Solr core name should be taken from the SolrServerProvider
  [OAK-845] Upgrade oak-lucene to Lucene 4.3
  [OAK-848] Segmentmk should log a warning when using the file backend on 32-bit systems
  [OAK-849] Automatically create Oak collection for SolrCloud deployments
  [OAK-853] Many child nodes: Diffing causes many calls to the MicroKernel
  [OAK-854] Use weight based caching limit instead of size based limits
  [OAK-858] NodeBuilder.getChildNodeCount performance and scalability
  [OAK-860] Streamline the IndexEditor
  [OAK-863] Enable stats for various caches used in Oak by default
  [OAK-871] RootImpl.hasPendingChanges is slow
  [OAK-875] Move MongoMk code to Oak Core
  [OAK-877] Generating observation events takes too long when intermediate save calls are involved
  [OAK-879] Default ScheduledExecutorService improvements
  [OAK-885] Skinny MongoMK Children objects
  [OAK-887] Bottleneck while creating multiple children with ACLs
  [OAK-889] Add respect orderable children capability in ImmutableTree#getChildren
  [OAK-895] Random access for Lucene index binaries
  [OAK-906] Add the REP_VERSION_DESC descriptor
  [OAK-909] PrincipalManagement: Document changes wrt Jackrabbit
  [OAK-911] Optimize Session.getItem(String)
  [OAK-914] Relax the NodeStateDiff.childNodeChanged() semantics
  [OAK-922] Optimize UpdateManyChildNodesTest
  [OAK-932] RootImpl to AbstractRoot
  [OAK-933] Implement Session#hasCapability
  [OAK-936] Incorporate Oak documentation into the Oak website
  [OAK-943] Provide more details with CommitFailedException
  [OAK-945] UserImporter should not cast UserManager to UserManagerImpl
  [OAK-953] Allow sub-classing of SessionImpl
  [OAK-961] Parametrise tests to run against all Microkernel backends
  [OAK-963] Clarify NodeStoreBranch.move() contract for move to self
  [OAK-971] More accurate cache weight for AbstractNode
  [OAK-975] Refactor KernelNodeStoreBranch
  [OAK-980] Add status information for the async index process
  [OAK-984] Add exclude property list to the Lucene index definition
  [OAK-997] cleanup codebase: remove unneeded internal abstraction
  [OAK-1006] Clean up oak-jcr package structure
  [OAK-1010] Unify the repository home config for the OSGi setup
  [OAK-1012] XmlImportTest should log out its session after each run
  [OAK-1014] Allow customization of repository descriptors
  [OAK-1015] Optimise path parsing

Bug fixes

  [OAK-212] Tree#getPropertyStatus requires tree to exist
  [OAK-214] PropertyImpl#getParent violates JCR API
  [OAK-220] PropertyState can only be accessed from parent tree
  [OAK-226] Property#getPath() relies on accessibility of the parent node
  [OAK-530] Optimization for xpath queries of type "/jcr:root//*[x/@y]"
  [OAK-708] SecureNodeState#getChildNodeCount and #getPropertyCount: don't respect read permissions
  [OAK-753] TreeImpl exposes hidden child trees
  [OAK-802] Occasional type validation errors in TCK setup
  [OAK-813] Removing a Node if the parent is not accessible
  [OAK-821] UserImportTest.testImportGroupIntoUsersTree failing
  [OAK-823] Missing validation for jcr:uuid property
  [OAK-826] NodeDefinition#getRequiredPrimaryTypes throws IllegalStateException
  [OAK-829] ConstraintViolationException while retrieving definition for all nodes with name jcr:childNodeDefinition
  [OAK-837] Lucene: colliding concurrency node creation
  [OAK-840] Intermittent test failure for testRegisterNodeType on JDK 7
  [OAK-841] Indexing empty string fails with "there's already a child node with name ':index'"
  [OAK-846] Branch conflicts not detected by MongoMK
  [OAK-847] Condition check broken in MemoryDocumentStore
  [OAK-851] Slowness while traversing a tree
  [OAK-864] MicroKernelException when moving a node to its own descendant
  [OAK-868] KernelNodeState.processJsonDiff throws IAE
  [OAK-870] Session.getNode/Property/Item() with relative path throws IllegalArgumentException
  [OAK-872] NodeStoreTest diff failures with MongoMK
  [OAK-873] Wrong readStatus resolution when using glob restriction and write permission
  [OAK-876] SegmentMK: File backend restart problem due to missing padding
  [OAK-878] IllegalArgumentException while adding/removing read permission to user/group
  [OAK-880] ChangeProcessor causes IllegalArgumentException when path filter ends with a slash
  [OAK-881] KernelNodeState.processJsonDiff() does not propagate return value of NodeStateDiff
  [OAK-883] Possible NPE in ContentMirrorStoreStrategy.PathIterator
  [OAK-888] PathUtils#getDepth returns 1 for empty path
  [OAK-892] Parameterize oak-jcr tests
  [OAK-893] MongoMK may fail with MicroKernelException under concurrent commits
  [OAK-897] Query+Security: Ensure joins can not reveal existence of invisible nodes
  [OAK-898] Session#move with a fresh session doesn't work properly
  [OAK-899] Query: simplify duplicate conditions
  [OAK-902] Lucene fulltext query: "contains(*, 'x OR y')" not working
  [OAK-912] Lucene index only filters the first contains clause
  [OAK-915] Workspace#copy of referenceable nodes does not generate new UUIDs
  [OAK-921] Failure on AccessControlManagerImpl.getPrivileges for rep:policy nodes
  [OAK-923] Runtime exception while creating a group
  [OAK-927] Concurrent commits may cause duplicate observation events
  [OAK-929] Permission changes not visible on root after refresh
  [OAK-930] VersionManager#isCheckedOut throws IllegalStateException
  [OAK-938] UserManager does not honour session refresh settings
  [OAK-940] Manually specified jcr:frozenUuid overwriting the one assigned by the VersionManager when versioning node
  [OAK-947] New node becomes existing after Session.refresh(true)
  [OAK-958] Session related entities do not honour session refresh settings
  [OAK-959] Deadlock between ChangeDispatcher and SegmentNodeStoreService
  [OAK-962] RootFuzzIT fails on MongoMK with seed -1091889749
  [OAK-965] SegmentNodeState.equals fails with IllegalArgumentException
  [OAK-966] Restore RepositoryHelper after TCK tests
  [OAK-967] Run parameterized tests in parallel
  [OAK-968] TCK tests run OOM when MongoDB is available
  [OAK-976] MicroKernel.diff() returns invalid JSON (H2)
  [OAK-977] Version restore may include jcr:frozenXXX properties
  [OAK-978] AssertionError thrown for invalid paths
  [OAK-979] MicroKernel.diff() returns incomplete JSON when moves are involved (H2)
  [OAK-983] Non full-text indices should ignore queries that have full-text constraints
  [OAK-989] Query parser doesn't decode paths
  [OAK-990] ConcurrentRead(Write)Test leaks session
  [OAK-991] DescendantSearchTest fails with NamespaceException on Jackrabbit 2
  [OAK-992] NPE when running FlatTreeWithAceForSamePrincipalTest on MongoMK
  [OAK-994] XPath to SQL-2 conversion error for "element(..)"
  [OAK-995] XPath: allow using RowIterator Row.getPath() for all queries
  [OAK-996] Incorrect types for version result nodes
  [OAK-998] Node#orderBefore() is not JCR conform
  [OAK-999] Version creates frozenNode children with orignial NoteType instead of frozenNode
  [OAK-1000] Queries on node name fail if the name starts with a number
  [OAK-1003] Missing package exports in oak-jcr module
  [OAK-1004] Typo in oak-core pom.xml
  [OAK-1007] Switch default Lucene Analyzer to ClassicAnalyzer
  [OAK-1008] Query parser splits token: FulltextQueryTest#testPredefinedEntityReference
  [OAK-1011] ReadDeepTreeTest should log session out after each test iteration
  [OAK-1017] Unstable hashes in MicroKernelImpl


In addition to the above-mentioned changes, this release contains
all the changes included up to the Apache Jackrabbit Oak 0.8 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
https://svn.apache.org/repos/asf/jackrabbit/dist/KEYS.

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

Oak is an effort implement a scalable and performant hierarchical content 
repository 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 100 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 2,500+ contributors.

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