Release Notes -- Apache Jackrabbit Oak -- Version 0.11 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.11 is to alpha-level software. Use at your own risk. Changes in Oak 0.11 ------------------- New Features [OAK-335] Performance tests for microkernel - write tests [OAK-619] Lock-free MongoMK implementation [OAK-1121] Enhance observation mechanism to only listen to cluster local changes Improvements [OAK-51] Access Control Management [OAK-66] JCR Node Type Management [OAK-76] Initial content in oak-run [OAK-91] Implement Authentication Support [OAK-98] Source code formatting, code conventions, Javadocs [OAK-366] MongoDB microkernal integration with OSGi [OAK-392] Review ContentSession#createBlob [OAK-414] Importing protected properties and nodes [OAK-615] UserValidator should check for cyclic group membership [OAK-630] SegmentMK: Implement compareAgainstBaseState [OAK-657] Add oak:unstructured [OAK-663] oak-jcr performance optimization [OAK-741] Better toString() methods [OAK-752] Remove deprecated code and code in "old" packages [OAK-776] NodeState convenience accessors [OAK-792] AccessControl Management: Document changes wrt. Jackrabbit [OAK-801] Add Javadoc to JsonObject.create(JsopTokenizer) [OAK-806] Content migration from Jackrabbit to Oak [OAK-855] NodeState.equals is sometimes very slow [OAK-874] Column names aren't reported properly for "select * from [nodeType]" queries [OAK-900] Run Jackrabbit Observation tests [OAK-910] Privilege Management: Document changes wrt Jackrabbit [OAK-946] Improve support for debugging Oak [OAK-949] UserQuery does not properly work for the optional everyone group [OAK-954] Make Lucene analyzer configurable [OAK-987] Implement the MicroKernel API [OAK-993] Improve backward compatibility for Item.save and Item.refresh [OAK-1018] Optimise Session.getNode [OAK-1031] SegmentMK: Fewer segment lookups [OAK-1032] SegmentMK: One SegmentWriter per SegmentNodeStore [OAK-1036] SegmentMK: Auto-flushing SegmentNodeBuilder [OAK-1037] Improve performance of XmlImport [OAK-1048] Unify node type management in the query index impls [OAK-1052] Introduce execution context for executing queries [OAK-1058] Review TreeTypeProvider [OAK-1060] Periodically poll for external events [OAK-1078] Move node state based configuration to oak-solr-core [OAK-1079] Create separate OSGi service classes for SolrQueryIndex/IndexEditor providers [OAK-1084] Allow blacklisting of rogue observation listener [OAK-1086] NodeTypes of successive calls to node.getPrimaryNodetypes() are not equal [OAK-1088] Thread safe MongoDocumentStore [OAK-1101] Improve concurrency of branch lookups [OAK-1102] Isolate MicroKernel specific code in MongoMK [OAK-1105] Osgi pluggability for the TokenProvider [OAK-1110] Make NodeStateDiff composable [OAK-1112] Support user data in local events [OAK-1113] Immediate delivery of events from local commits [OAK-1117] [MongoMk]Flag document with children [OAK-1119] [MongoMK] Reduce number of calls made to Mongo DB when an Oak based application is restarted [OAK-1123] Reusable NodeStoreBranch base implementation [OAK-1126] Same node and property name support [OAK-1127] MixinTest.testRemoveInheritedMixin() may fail depending on test order [OAK-1131] Provide a way to inject Observer instances into NodeStore implementations [OAK-1135] NPE in CompiledPermissionImpl.getTreePermission() [OAK-1136] Revisit/Improve CompiledPermissionImpl.getTreePermission() [OAK-1139] Avoid the duplicate property lookup during getProperty("name").getString() [OAK-1142] Optimize node builders for the common case where there are no transient changes [OAK-1144] Avoid wrapping TreePermission into SecurityContext [OAK-1146] Remove equals/hashcode on SecureNodeState and TreePermissionImpl [OAK-1147] SecureNodeBuilder/SecureNodeState: Consider using 'TreePermission#canReadProperties' [OAK-1148] Incomplete Javadoc with NodeState#compareAgainstBaseState [OAK-1149] Avoid exists check in NodeDelegate.getChild() with empty path [OAK-1156] Improve the document cache invalidation logic to selectivly invalidate doc [OAK-1162] Make Solr index asynchronous by default [OAK-1169] Update Guava to version 15.0 [OAK-1188] Input streams returned from Blob instances should implement available() Bug [OAK-127] JCR: Support for XML imports [OAK-223] Missing path convertion in oak-jcr [OAK-244] ExportDocViewTest test failing [OAK-373] OOME running TCK [OAK-436] apache.jackrabbit.mk.store.NotFoundException [OAK-504] DefaultRevisionStore: Exception occurred in GC cycle: NotFoundException [OAK-567] DiffBuilder performance problem [OAK-587] DefaultRevisionStoreTest.testConcurrentGC fails every now and then. [OAK-724] Text.getRelativeParent() does not work with paths containing fully qualified names [OAK-745] Hardcoded OpenSecurityProvider in RootImpl constructor [OAK-901] Test root node type is not reported correctly [OAK-948] Compatibility - Oak not generates property change event for touched properties [OAK-970] DocumentViewImportTest fails with SegmentMK [OAK-1055] Occasional test failure in ObservationTest.observation() [OAK-1083] Query with descendent node and access control fails to return result [OAK-1085] Compatibility for queries with not(child/@prop) conditions [OAK-1087] TCK tests fail with SegmentMK and MongoStore [OAK-1089] Too many document splits [OAK-1090] Event-listener not notified on Node.orderBefore [OAK-1091] TokenLoginModule#commit should throw an exception if TokenInfo is not created [OAK-1093] IllegalArgumentException on Row.getValues() [OAK-1095] versionable path property has wrong type [OAK-1096] QueryManager does not have autorefresh [OAK-1097] VersionablePathHook ignores "modified" version histories [OAK-1098] AuthorizableImpl methods should convert path to Oak path [OAK-1104] SegmentNodeStore rebase operation assumes wrong child node order [OAK-1106] Query engine does not deal with remapped namespaces [OAK-1107] MongoMK may not detect changes with diffManyChildren() [OAK-1109] SegmentMK: failed to load segment [OAK-1111] Node#setProperty(String, Calendar) doesn't take time zone in account [OAK-1122] Empty branch commit returns head revision on trunk [OAK-1125] FileStore should inherit cache size setting [OAK-1128] Conditions of the form "(x=1 or x=2) or y=3" are not processed correctly [OAK-1129] Repeated MongoMK.rebase() always adds new revision [OAK-1132] QueryEngine #executeQuery creates a new revision on each call [OAK-1140] SecureNodeBuilder should use the base state for the security context [OAK-1141] SecureNodeBuilder.getChildNode() should not optimize for SecurityContext.canReadAll() [OAK-1143] [scala] Repository init throws "illegal cyclic reference involving class ChangeDispatcher" [OAK-1154] MongoMK throws exception when there are many listeners [OAK-1164] Duplicate binaries [OAK-1165] Too frequent document splits [OAK-1167] Background read may cause IllegalArgumentException [OAK-1170] Inconsistent reads with concurrent benchmark tests [OAK-1171] Query fails unexpectedly when property conversion is not possible [OAK-1172] AbstractTree.getChildrenCount() not very performant due to INTERNAL_NODE_NAMES [OAK-1173] NPE if checking for a non-existing node in version storage [OAK-1177] Node#isModified returns true if node has non-readable child [OAK-1178] MutableTree#isNew: replace implementation by NodeBuilder#isNew [OAK-1192] NPE in Versioning when a Node has a hidden child node [OAK-1194] Missing properties in Node.getReferences() [OAK-1196] Node.getReferences() should not show references in version storage In addition to the above-mentioned changes, this release contains all the changes included up to the Apache Jackrabbit Oak 0.10 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/