| 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/ |