You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2018/11/09 09:44:20 UTC

svn commit: r1846222 [5/22] - in /jackrabbit/site/live/oak/docs: ./ architecture/ coldstandby/ features/ nodestore/ nodestore/document/ nodestore/segment/ oak-mongo-js/ oak_api/ plugins/ query/ security/ security/accesscontrol/ security/authentication/...

Modified: jackrabbit/site/live/oak/docs/nodestore/segment/records.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/nodestore/segment/records.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/nodestore/segment/records.html (original)
+++ jackrabbit/site/live/oak/docs/nodestore/segment/records.html Fri Nov  9 09:44:19 2018
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-09-19 
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-21 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180919" />
+    <meta name="Date-Revision-yyyymmdd" content="20180221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Segments and records</title>
     <link rel="stylesheet" href="../../css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
-            <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
             <li><a href="../../oak_api/overview.html" title="Oak API">Oak API</a></li>
         </ul>
       </li>
@@ -67,12 +66,7 @@
                   <li><a href="../../nodestore/compositens.html" title="Composite NodeStore">Composite NodeStore</a></li>
               </ul>
             </li>
-            <li class="dropdown-submenu">
-<a href="../../plugins/blobstore.html" title="Blob Storage">Blob Storage</a>
-              <ul class="dropdown-menu">
-                  <li><a href="../../features/direct-binary-access.html" title="Direct Binary Access">Direct Binary Access</a></li>
-              </ul>
-            </li>
+            <li><a href="../../plugins/blobstore.html" title="Blob Storage">Blob Storage</a></li>
             <li class="dropdown-submenu">
 <a href="../../query/query.html" title="Query">Query</a>
               <ul class="dropdown-menu">
@@ -142,7 +136,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-09-19<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-02-21<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -161,14 +155,12 @@
     <li><a href="../../architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a>  </li>
           <li class="nav-header">Main APIs</li>
     <li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a>  </li>
-    <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a>  </li>
     <li><a href="../../oak_api/overview.html" title="Oak API"><span class="none"></span>Oak API</a>  </li>
           <li class="nav-header">Features and Plugins</li>
     <li><a href="../../nodestore/overview.html" title="Node Storage"><span class="icon-chevron-down"></span>Node Storage</a>
       <ul class="nav nav-list">
     <li><a href="../../nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
       <ul class="nav nav-list">
-    <li><a href="../../nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a>  </li>
     <li><a href="../../nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a>  </li>
     <li><a href="../../nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a>  </li>
     <li><a href="../../nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a>  </li>
@@ -179,11 +171,7 @@
     <li><a href="../../nodestore/compositens.html" title="Composite NodeStore"><span class="none"></span>Composite NodeStore</a>  </li>
       </ul>
   </li>
-    <li><a href="../../plugins/blobstore.html" title="Blob Storage"><span class="icon-chevron-down"></span>Blob Storage</a>
-      <ul class="nav nav-list">
-    <li><a href="../../features/direct-binary-access.html" title="Direct Binary Access"><span class="none"></span>Direct Binary Access</a>  </li>
-      </ul>
-  </li>
+    <li><a href="../../plugins/blobstore.html" title="Blob Storage"><span class="none"></span>Blob Storage</a>  </li>
     <li><a href="../../query/query.html" title="Query"><span class="icon-chevron-down"></span>Query</a>
       <ul class="nav nav-list">
     <li><a href="../../query/query-engine.html" title="Query Engine"><span class="none"></span>Query Engine</a>  </li>
@@ -251,16 +239,17 @@
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
--->
-<h1>Segments and records</h1>
+--><h1>Segments and records</h1>
 <p>While <a href="tar.html">TAR files</a> and segments are a coarse-grained mechanism to divide the repository content in more manageable pieces, the real information is stored inside the segments as finer-grained records. This page details the structure of segments and show the binary representation of data stored by Oak.</p>
 <div class="section">
 <h2><a name="Segments"></a>Segments</h2>
 <p>Segments are not created equal. Oak, in fact, distinguishes data and bulk segments, where the former is used to store structured data (e.g. information about node and properties), while the latter contains unstructured data (e.g. the value of binary properties or of very long strings).</p>
 <p>It is possible to tell apart a bulk segment from a data segment by just looking at its identifier. A segment identifier is a randomly generated UUID. Segment identifiers are 16 bytes long, but Oak uses 4 bits to set apart bulk segments from data segments. The following bit patterns are used (each <tt>x</tt> represents four random bits):</p>
-<ul>
 
+<ul>
+  
 <li><tt>xxxxxxxx-xxxx-4xxx-axxx-xxxxxxxxxxxx</tt> data segment UUID</li>
+  
 <li><tt>xxxxxxxx-xxxx-4xxx-bxxx-xxxxxxxxxxxx</tt> bulk segment UUID</li>
 </ul>
 <p>(This encoding makes segment UUIDs appear as syntactically valid version 4 random UUIDs specified in RFC 4122.)</p></div>
@@ -268,11 +257,9 @@
 <h2><a name="Bulk_segments"></a>Bulk segments</h2>
 <p>Bulk segments contain raw binary data, interpreted simply as a sequence of block records with no headers or other extra metadata:</p>
 
-<div>
-<div>
-<pre class="source">[block 1] [block 2] ... [block N]
+<div class="source">
+<div class="source"><pre class="prettyprint">[block 1] [block 2] ... [block N]
 </pre></div></div>
-
 <p>A bulk segment whose length is <tt>n</tt> bytes consists of <tt>n div 4096</tt> block records of 4KiB each followed possibly a block record of <tt>n mod 4096</tt> bytes, if there still are remaining bytes in the segment. The structure of a bulk segment can thus be determined based only on the segment length.</p></div>
 <div class="section">
 <h2><a name="Data_segments"></a>Data segments</h2>
@@ -282,17 +269,14 @@
 <p>The segment header also maintains a set of references to <i>root records</i>: those records that are not referenced from any other records in the segment.</p>
 <p>The overall structure of a data segment is:</p>
 
-<div>
-<div>
-<pre class="source">[segment header] [record 1] [record 2] ... [record N]
+<div class="source">
+<div class="source"><pre class="prettyprint">[segment header] [record 1] [record 2] ... [record N]
 </pre></div></div>
-
 <p>The segment header and each record is zero-padded to make their size a multiple of four bytes and to align the next record at a four-byte boundary.</p>
 <p>The segment header consists of the following fields. All integers are stored in big endian format.</p>
 
-<div>
-<div>
-<pre class="source">+---------+---------+---------+---------+---------+---------+---------+---------+
+<div class="source">
+<div class="source"><pre class="prettyprint">+---------+---------+---------+---------+---------+---------+---------+---------+
 | magic bytes: &quot;0aK&quot;          | version | reserved                               
 +---------+---------+---------+---------+---------+---------+---------+---------+
   reserved          | generation                            | segrefcount            
@@ -312,7 +296,6 @@
 |                                                 | padding (set to 0)          |
 +---------+---------+---------+---------+---------+---------+---------+---------+
 </pre></div></div>
-
 <p>The first three bytes of a segment always contain the ASCII string &#x201c;0aK&#x201d;, which is intended to make the binary segment data format easily detectable. The next byte indicates the version of the segment format and is currently set to 12.</p>
 <p>The <tt>generation</tt> field indicates the segment&#x2019;s generation wrt. to garbage collection. This field is used by the garbage collector to determine whether a segment needs to be retained or can be collected.</p>
 <p>The <tt>segrefcount</tt> field indicates how many other segments are referenced by records within this segment. The identifiers of those segments are listed starting at offset 32 of the segment header. This lookup table is used to optimize garbage collection and to avoid having to repeat the 16-byte UUIDs whenever references to records in other segments are made.</p>
@@ -326,11 +309,9 @@
 <p>The record number field is a logical identifier for the record. The logical identifier is used as a lookup key in the record references table in the segment identified by the segment field. Once the correct row in the record references table is found, the record offset can be used to locate the position of the record in the segment.</p>
 <p>The offset is relative to the beginning of a theoretical segment which is defined to be 256 KiB. Since records are added from the bottom of a segment to the top (i.e. from higher to lower offsets), and since segments could be shrunk down to be smaller than 256 KiB, the offset has to be normalized with to the following formula.</p>
 
-<div>
-<div>
-<pre class="source">SIZE - 256 KiB + OFFSET
+<div class="source">
+<div class="source"><pre class="prettyprint">SIZE - 256 KiB + OFFSET
 </pre></div></div>
-
 <p><tt>SIZE</tt> is the actual size of the segment under inspection, and <tt>OFFSET</tt> is the offset looked up from the record references table. The normalized offset can be used to locate the position of the record in the current segment.</p></div>
 <div class="section">
 <h2><a name="Records"></a>Records</h2>
@@ -348,44 +329,54 @@
 <p>Value records are used for storing names and values of the content tree. Since item names can be thought of as name values and since all JCR and Oak values can be expressed in binary form (strings encoded in UTF-8), it is easiest to simply use that form for storing all values. The size overhead of such a form for small value types like booleans or dates is amortized by the facts that those types are used only for a minority of values in typical content trees and that repeating copies of a value can be stored just once.</p>
 <p>There are four types of value records: small, medium, long and external. The small- and medium-sized values are stored in inline form, prepended by one or two bytes that indicate the length of the value. Long values of up to two exabytes (2^61) are stored as a list of block records. Finally an external value record contains the length of the value and a string reference (up to 4kB in length) to some external storage location.</p>
 <p>The type of a value record is encoded in the high-order bits of the first byte of the record. These bit patterns are:</p>
-<ul>
 
+<ul>
+  
 <li><tt>0xxxxxxx</tt>: small value, length (0 - 127 bytes) encoded in 7 bits</li>
+  
 <li><tt>10xxxxxx</tt>: medium value length (128 - 16511 bytes) encoded in 6 + 8 bits</li>
+  
 <li><tt>110xxxxx</tt>: long value, length (up to 2^61 bytes) encoded in 5 + 7*8 bits</li>
+  
 <li><tt>1110xxxx</tt>: external value, reference string length encoded in 4 + 8 bits</li>
 </ul></div>
 <div class="section">
 <h3><a name="List_records"></a>List records</h3>
 <p>List records represent a general-purpose list of record identifiers. They are used as building blocks for other types of records, as we saw for value records and as we will see for template records and node records.</p>
 <p>The list record is a logical record using two different types of physical records to represent itself:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>bucket record: this is a recursive record representing a list of at most 255 references. A bucket record can reference other bucket records, hierarchically, or the record identifiers of the elements to be stored in the list. A bucket record doesn&#x2019;t maintain any other information exception record identifiers.</p>
-</li>
+<p>bucket record: this is a recursive record representing a list of at most 255  references. A bucket record can reference other bucket records,  hierarchically, or the record identifiers of the elements to be stored in the  list. A bucket record doesn&#x2019;t maintain any other information exception record  identifiers.</p></li>
+  
 <li>
-
-<p>list record: this is a top-level record that maintains the size of the list in an integer field and a record identifier pointing to a bucket.</p>
-<p>+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2013;+ | sub-list ID 1            | &#x2026; | +&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2013;+ | v +&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+ | record ID 1              | &#x2026; | record ID 255            | +&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+&#x2014;&#x2014;&#x2013;+</p>
-</li>
+<p>list record: this is a top-level record that maintains the size of the list in  an integer field and a record identifier pointing to a bucket.</p></li>
 </ul>
+
+<div class="source">
+<div class="source"><pre class="prettyprint">+--------+--------+--------+-----+
+| sub-list ID 1            | ... |
++--------+--------+--------+-----+
+  |
+  v
++--------+--------+--------+-----+--------+--------+--------+
+| record ID 1              | ... | record ID 255            |
++--------+--------+--------+-----+--------+--------+--------+
+</pre></div></div>
 <p>The result is a hierarchically stored immutable list where each element can be accessed in O(log N) time and the size overhead of updating or appending list elements (and thus creating a new immutable list) is also O(log N).</p>
-<p>List records are useful to store a list of references to other records. If the list is too big, it is split into different bucket records that may be  stored in the same segment or across segments. This guarantees good performance for small lists, without loosing the capability to store lists with a big number of elements.</p></div>
+<p>List records are useful to store a list of references to other records. If the list is too big, it is split into different bucket records that may be stored in the same segment or across segments. This guarantees good performance for small lists, without loosing the capability to store lists with a big number of elements.</p></div>
 <div class="section">
 <h3><a name="Map_records"></a>Map records</h3>
 <p>Map records implement a general-purpose unordered map of strings to record identifiers. They are used for nodes with a large number of properties or child nodes. As lists they are represented using two types of physical record:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>leaf record: if the number of elements in the map is small, they are all stored in a leaf record. This covers the simplest case for small maps.</p>
-</li>
+<p>leaf record: if the number of elements in the map is small, they are all  stored in a leaf record. This covers the simplest case for small maps.</p></li>
+  
 <li>
-
-<p>branch record: if the number of elements in the map is too big, the original map is split into smaller maps based on a hash function applied to the keys of the map. A branch record is recursive, because it can reference other branch records if the sub-maps are too big and need to be split again.</p>
-</li>
+<p>branch record: if the number of elements in the map is too big, the original  map is split into smaller maps based on a hash function applied to the keys of  the map. A branch record is recursive, because it can reference other branch  records if the sub-maps are too big and need to be split again.</p></li>
 </ul>
 <p>Maps are stored using the hash array mapped trie (HAMT) data structure. The hash code of each key is split into pieces of 5 bits each and the keys are sorted into 32 (2^5) buckets based on the first 5 bits. If a bucket contains less than 32 entries, then it is stored directly as a list of key-value pairs. Otherwise the keys are split into sub-buckets based on the next 5 bits of their hash codes. When all buckets are stored, the list of top-level bucket references gets stored along with the total number of entries in the map.</p>
 <p>The result is a hierarchically stored immutable map where each element can be accessed in O(log N) time and the size overhead of updating or inserting list elements is also O(log N).</p>
@@ -397,21 +388,17 @@
 <p>The template record allows Oak to handle simple modifications to nodes in the most efficient way possible.</p>
 <p>As such a template record describes the common structure of a family of related nodes. Since the structures of most nodes in a typical content tree fall into a small set of common templates, it makes sense to store such templates separately instead of repeating that information separately for each node. For example, the property names and types as well as child node names of all nt:file nodes are typically the same. The presence of mixins and different subtypes increases the number of different templates, but they&#x2019;re typically still far fewer than nodes in the repository.</p>
 <p>A template record consists of a set of up to N (exact size TBD, N ~ 256) property name and type pairs. Additionally, since nodes that are empty or contain just a single child node are most common, a template record also contains information whether the node has zero, one or many child nodes. In case of a single child node, the template also contains the name of that node. For example, the template for typical mix:versionable nt:file nodes would be (using CND-like notation):</p>
-<ul>
-
-<li>jcr:primaryType (NAME)
-<ul>
 
-<li>jcr:mixinTypes (NAME) multiple</li>
-<li>jcr:created (DATE)</li>
-<li>jcr:uuid (STRING)</li>
-<li>jcr:versionHistory (REFERENCE)</li>
-<li>jcr:predecessors (REFERENCE) multiple</li>
-<li>jcr:baseVersion (REFERENCE)</li>
-<li>jcr:content</li>
-</ul>
-</li>
-</ul>
+<div class="source">
+<div class="source"><pre class="prettyprint">- jcr:primaryType (NAME)
+- jcr:mixinTypes (NAME) multiple
+- jcr:created (DATE)
+- jcr:uuid (STRING)
+- jcr:versionHistory (REFERENCE)
+- jcr:predecessors (REFERENCE) multiple
+- jcr:baseVersion (REFERENCE)
++ jcr:content
+</pre></div></div>
 <p>The names used in a template are stored as separate value records and included by reference. This way multiple templates that for example all contain the &#x201c;jcr:primaryType&#x201d; property name don&#x2019;t need to repeatedly store it.</p></div>
 <div class="section">
 <h3><a name="Node_records"></a>Node records</h3>

Modified: jackrabbit/site/live/oak/docs/nodestore/segment/tar.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/nodestore/segment/tar.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/nodestore/segment/tar.html (original)
+++ jackrabbit/site/live/oak/docs/nodestore/segment/tar.html Fri Nov  9 09:44:19 2018
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-09-19 
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-21 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180919" />
+    <meta name="Date-Revision-yyyymmdd" content="20180221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Structure of TAR files</title>
     <link rel="stylesheet" href="../../css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
-            <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
             <li><a href="../../oak_api/overview.html" title="Oak API">Oak API</a></li>
         </ul>
       </li>
@@ -67,12 +66,7 @@
                   <li><a href="../../nodestore/compositens.html" title="Composite NodeStore">Composite NodeStore</a></li>
               </ul>
             </li>
-            <li class="dropdown-submenu">
-<a href="../../plugins/blobstore.html" title="Blob Storage">Blob Storage</a>
-              <ul class="dropdown-menu">
-                  <li><a href="../../features/direct-binary-access.html" title="Direct Binary Access">Direct Binary Access</a></li>
-              </ul>
-            </li>
+            <li><a href="../../plugins/blobstore.html" title="Blob Storage">Blob Storage</a></li>
             <li class="dropdown-submenu">
 <a href="../../query/query.html" title="Query">Query</a>
               <ul class="dropdown-menu">
@@ -142,7 +136,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-09-19<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-02-21<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -161,14 +155,12 @@
     <li><a href="../../architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a>  </li>
           <li class="nav-header">Main APIs</li>
     <li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a>  </li>
-    <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a>  </li>
     <li><a href="../../oak_api/overview.html" title="Oak API"><span class="none"></span>Oak API</a>  </li>
           <li class="nav-header">Features and Plugins</li>
     <li><a href="../../nodestore/overview.html" title="Node Storage"><span class="icon-chevron-down"></span>Node Storage</a>
       <ul class="nav nav-list">
     <li><a href="../../nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
       <ul class="nav nav-list">
-    <li><a href="../../nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a>  </li>
     <li><a href="../../nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a>  </li>
     <li><a href="../../nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a>  </li>
     <li><a href="../../nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a>  </li>
@@ -179,11 +171,7 @@
     <li><a href="../../nodestore/compositens.html" title="Composite NodeStore"><span class="none"></span>Composite NodeStore</a>  </li>
       </ul>
   </li>
-    <li><a href="../../plugins/blobstore.html" title="Blob Storage"><span class="icon-chevron-down"></span>Blob Storage</a>
-      <ul class="nav nav-list">
-    <li><a href="../../features/direct-binary-access.html" title="Direct Binary Access"><span class="none"></span>Direct Binary Access</a>  </li>
-      </ul>
-  </li>
+    <li><a href="../../plugins/blobstore.html" title="Blob Storage"><span class="none"></span>Blob Storage</a>  </li>
     <li><a href="../../query/query.html" title="Query"><span class="icon-chevron-down"></span>Query</a>
       <ul class="nav nav-list">
     <li><a href="../../query/query-engine.html" title="Query Engine"><span class="none"></span>Query Engine</a>  </li>
@@ -251,8 +239,7 @@
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
--->
-<h1>Structure of TAR files</h1>
+--><h1>Structure of TAR files</h1>
 <p>Here is described the physical layout of a TAR file as used by Apache Oak. First, a brief introduction of the TAR format is given. Next, more details are provided about the low level information that is written in TAR entries. Finally, it&#x2019;s described how Oak saves a graph data structure inside the TAR file and how this representation is optimized for fast retrieval.</p>
 <div class="section">
 <h2><a name="Organization_of_a_TAR_file"></a>Organization of a TAR file</h2>
@@ -260,82 +247,66 @@
 <p>Logically speaking, a TAR file is a linear sequence of entries. Every entry is represented by two or more blocks. The first block always contains the entry header. Subsequent blocks store the content of the file.</p>
 <p><img src="tar.png" alt="Overview of a TAR file" /></p>
 <p>The entry header is composed of the following fields:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>file name (100 bytes) - name of the file stored in this entry.</p>
-</li>
+<p>file name (100 bytes) - name of the file stored in this entry.</p></li>
+  
 <li>
-
-<p>file mode (8 bytes) - string representation of the octal file mode.</p>
-</li>
+<p>file mode (8 bytes) - string representation of the octal file mode.</p></li>
+  
 <li>
-
-<p>owner&#x2019;s numeric ID (8 bytes) - string representation of the user ID of the owner of the file.</p>
-</li>
+<p>owner&#x2019;s numeric ID (8 bytes) - string representation of the user ID of the  owner of the file.</p></li>
+  
 <li>
-
-<p>group&#x2019;s numeric ID (8 bytes) - string representation of the group ID of the owner of the file.</p>
-</li>
+<p>group&#x2019;s numeric ID (8 bytes) - string representation of the group ID of the  owner of the file.</p></li>
+  
 <li>
-
-<p>file size (12 bytes) - string representation of the octal size of the file.</p>
-</li>
+<p>file size (12 bytes) - string representation of the octal size of the file.</p></li>
+  
 <li>
-
-<p>last modification time (12 bytes) - string representation of the octal time stamp when the file was last modified.</p>
-</li>
+<p>last modification time (12 bytes) - string representation of the octal time  stamp when the file was last modified.</p></li>
+  
 <li>
-
-<p>checksum (8 bytes) - checksum for the header data.</p>
-</li>
+<p>checksum (8 bytes) - checksum for the header data.</p></li>
+  
 <li>
-
-<p>file type (1 byte) - type of the file stored in the entry. This field specifies if the file is a regular file, a hard link or a symbolic link.</p>
-</li>
+<p>file type (1 byte) - type of the file stored in the entry. This field  specifies if the file is a regular file, a hard link or a symbolic link.</p></li>
+  
 <li>
-
-<p>name of linked file (1 byte) - in case the file stored in the entry is a link, this field stores the name of the file pointed to by the link.</p>
-</li>
+<p>name of linked file (1 byte) - in case the file stored in the entry is a link,  this field stores the name of the file pointed to by the link.</p></li>
 </ul></div>
 <div class="section">
 <h2><a name="The_TAR_file_as_used_by_Oak"></a>The TAR file as used by Oak</h2>
 <p>Some fields are not used by Oak. In particular, Oak sets the file mode, the owner&#x2019;s numeric ID, the group&#x2019;s numeric ID, the checksum, and the name of linked file to uninteresting values. The only meaningful values assigned to the fields of the entry header are:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>file name: the name of the data file. There are different data files used by Oak. They are described below.</p>
-</li>
+<p>file name: the name of the data file. There are different data files used by  Oak. They are described below.</p></li>
+  
 <li>
-
-<p>file size: the size of the data file. The value assigned to this field is trivially computed from the amount of information stored in the data file.</p>
-</li>
+<p>file size: the size of the data file. The value assigned to this field is  trivially computed from the amount of information stored in the data file.</p></li>
+  
 <li>
-
-<p>last modification time: the time stamp when the entry was written.</p>
-</li>
+<p>last modification time: the time stamp when the entry was written.</p></li>
 </ul>
 <p>There are four kinds of files stored in a TAR file:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>segments: this type of file contains data about a segment in the segment store. This kind of file has a file name in the form <tt>UUID.CRC2</tt>, where <tt>UUID</tt> is a 128 bit UUID represented as an hexadecimal string and <tt>CRC2</tt> is a zero- padded numeric string representing the CRC2 checksum of the raw segment data.</p>
-</li>
+<p>segments: this type of file contains data about a segment in the segment  store. This kind of file has a file name in the form <tt>UUID.CRC2</tt>, where <tt>UUID</tt>  is a 128 bit UUID represented as an hexadecimal string and <tt>CRC2</tt> is a zero-  padded numeric string representing the CRC2 checksum of the raw segment data.</p></li>
+  
 <li>
-
-<p>binary references: this file has a name ending in <tt>.brf</tt> and represents a catalog of blobs (i.e. value records) referenced by segments in this TAR file. This catalog is indexed by the generation of the segments it contains.</p>
-</li>
+<p>binary references: this file has a name ending in <tt>.brf</tt> and represents a  catalog of blobs (i.e. value records) referenced by segments in this TAR file.  This catalog is indexed by the generation of the segments it contains.</p></li>
+  
 <li>
-
-<p>graph: this file has a name ending in <tt>.gph</tt> and contains the segment graph of all the segments in this tar file. The graph is represented as an adjacency list of UUIDs.</p>
-</li>
+<p>graph: this file has a name ending in <tt>.gph</tt> and contains the segment graph  of all the segments in this tar file. The graph is represented as an adjacency  list of UUIDs.</p></li>
+  
 <li>
-
-<p>index: this file has a name ending in <tt>.idx</tt> and contains a sorted list of every segment contained in the TAR file.</p>
-</li>
+<p>index: this file has a name ending in <tt>.idx</tt> and contains a sorted list of  every segment contained in the TAR file.</p></li>
 </ul></div>
 <div class="section">
 <h2><a name="Oak_TAR_file_layout"></a>Oak TAR file layout</h2>
@@ -352,66 +323,67 @@
 <p>The list of segments referenced by a data segment will end up in the graph file. To speed up the process of locating a segment in the list of referenced segment, this list is maintained ordered.</p>
 <p>The data segment file is divided in two parts. The first is the header and the second contains the actual records contained in this segment.</p>
 <p>The data segment header is divided in three parts:</p>
-<ul>
 
+<ul>
+  
 <li>
-
 <p>a fixed part (32 bytes) containing:</p>
+  
 <ul>
-
-<li>
-
-<p>a magic number (3 bytes): identifies the beginning of a data segment.</p>
-</li>
-<li>
-
-<p>version (1 byte): the segment version.</p>
-</li>
-<li>
-
-<p>empty bytes (6 bytes): reserved for future use.</p>
-</li>
-<li>
-
-<p>generation (4 bytes): generation of the segment, serialized as a big endian integer.</p>
-</li>
-<li>
-
-<p>number of references (4 bytes): number of references to external segments, serialized as a big endian integer.</p>
-</li>
-<li>
-
-<p>number of records (4 bytes): number of records in this segment, serialized as a big endian integer.</p>
-</li>
-<li>
-
-<p>empty bytes (10 bytes): reserved for future use.</p>
-</li>
-</ul>
-</li>
-<li>
-
-<p>second part of the header is a variable list of references to external segments. Here there will be a list of UUIDs - one per referenced segment - matching the number of references specified in the first part of the header.</p>
-</li>
-<li>
-
-<p>the third and last part of the header consists of a list of record header entries, matching the number of records specified in the first part of the header. Each record header consists of:</p>
+    
+<li>a magic number (3 bytes): identifies the beginning of a data segment.</li>
+  </ul>
+  
 <ul>
-
-<li>
-
-<p>record number (4 bytes), serialized as a big endian integer.</p>
-</li>
+    
+<li>version (1 byte): the segment version.</li>
+  </ul>
+  
+<ul>
+    
+<li>empty bytes (6 bytes): reserved for future use.</li>
+  </ul>
+  
+<ul>
+    
+<li>generation (4 bytes): generation of the segment, serialized as a big endian  integer.</li>
+  </ul>
+  
+<ul>
+    
+<li>number of references (4 bytes): number of references to external segments,  serialized as a big endian integer.</li>
+  </ul>
+  
+<ul>
+    
+<li>number of records (4 bytes): number of records in this segment, serialized  as a big endian integer.</li>
+  </ul>
+  
+<ul>
+    
+<li>empty bytes (10 bytes): reserved for future use.</li>
+  </ul></li>
+  
 <li>
-
-<p>record type (1 byte): can be one of <i>LEAF</i>, <i>BRANCH</i>, <i>BUCKET</i>, <i>LIST</i>, <i>VALUE</i>, <i>BLOCK</i>, <i>TEMPLATE</i>, <i>NODE</i> or <i>BLOB_ID</i>.</p>
-</li>
+<p>second part of the header is a variable list of references to external segments.  Here there will be a list of UUIDs - one per referenced segment - matching the  number of references specified in the first part of the header.</p></li>
+  
 <li>
-
-<p>record offset (4 bytes), serialized as a big endian integer: offset of the record counting from the end of the segment. The actual position of the record can be obtained by computing <tt>(segment size - offset)</tt>.</p>
-</li>
-</ul>
-</li>
+<p>the third and last part of the header consists of a list of record header  entries, matching the number of records specified in the first part of the  header. Each record header consists of:</p>
+  
+<ul>
+    
+<li>record number (4 bytes), serialized as a big endian integer.</li>
+  </ul>
+  
+<ul>
+    
+<li>record type (1 byte): can be one of <i>LEAF</i>, <i>BRANCH</i>, <i>BUCKET</i>, <i>LIST</i>,  <i>VALUE</i>, <i>BLOCK</i>, <i>TEMPLATE</i>, <i>NODE</i> or <i>BLOB_ID</i>.</li>
+  </ul>
+  
+<ul>
+    
+<li>record offset (4 bytes), serialized as a big endian integer: offset of the  record counting from the end of the segment. The actual position of the  record can be obtained by computing <tt>(segment size - offset)</tt>.</li>
+  </ul></li>
 </ul>
 <p>After the segment header, the actual records are stored, at the offsets advertised in the corresponding record header stored in the last part of the segment header.</p>
 <p>See <a href="records.html">Segments and records</a> for description of the various record types and their format.</p></div>
@@ -421,143 +393,120 @@
 <p>The format of the binary references file is optimized for reading. The file is stored in reverse order to maintain the most important information at the end of the file. This strategy is inline with the overall layout of the entries in the TAR file.</p>
 <p>The binary references file is divided in two parts. The first is a header and the second contains the real data in the catalog.</p>
 <p>The binary references header contains the following fields:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>a magic number (4 bytes): identifies the beginning of a binary references file.</p>
-</li>
+<p>a magic number (4 bytes): identifies the beginning of a binary references file.</p></li>
+  
 <li>
-
-<p>size of the whole binary references mapping (4 bytes): number of bytes occupied by the entire structure holding binary references (per generation, per segment).</p>
-</li>
+<p>size of the whole binary references mapping (4 bytes): number of bytes occupied  by the entire structure holding binary references (per generation, per segment).</p></li>
+  
 <li>
-
-<p>number of generations (4 bytes): number of different generations of the segments which refer blobs.</p>
-</li>
+<p>number of generations (4 bytes): number of different generations of the segments  which refer blobs.</p></li>
+  
 <li>
-
-<p>checksum (4 bytes): a CRC2 checksum of the content of the binary references file.</p>
-</li>
+<p>checksum (4 bytes): a CRC2 checksum of the content of the binary references  file.</p></li>
 </ul>
 <p>Immediately after the graph header, the index data is stored. The storage scheme used is the following:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>generation of all the following segments.</p>
-</li>
+<p>generation of all the following segments.</p></li>
+  
 <li>
-
-<p>number of segment to binary references mappings for the current generation.</p>
-</li>
+<p>number of segment to binary references mappings for the current generation.</p></li>
+  
 <li>
-
 <p>for each mapping we have:</p>
+  
 <ul>
-
-<li>
-
-<p>UUID of the referencing segment.</p>
-</li>
-<li>
-
-<p>number of referenced blobs.</p>
-</li>
-<li>
-
-<p>an unordered enumeration of blob ids representing blobs referenced by the current segment.</p>
-</li>
-</ul>
-</li>
+    
+<li>UUID of the referencing segment.</li>
+  </ul>
+  
+<ul>
+    
+<li>number of referenced blobs.</li>
+  </ul>
+  
+<ul>
+    
+<li>an unordered enumeration of blob ids representing blobs referenced by the  current segment.</li>
+  </ul></li>
 </ul></div>
 <div class="section">
 <h2><a name="Graph_files"></a>Graph files</h2>
 <p>The graph file represents the relationships between segments stored inside or outside the TAR file. The graph is stored as an adjacency list of UUIDs, where each UUID represents a segment. Like the binary references file, the graph file is also stored backwards.</p>
 <p>The content of the graph file is divided in two parts: a graph header and a graph adjacency list.</p>
 <p>The graph header contains the following fields:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>a magic number (4 bytes): identifies the beginning of a graph file.</p>
-</li>
+<p>a magic number (4 bytes): identifies the beginning of a graph file.</p></li>
+  
 <li>
-
-<p>size of the graph adjacency list (4 bytes): number of bytes occupied by the graph adjacency list.</p>
-</li>
+<p>size of the graph adjacency list (4 bytes): number of bytes occupied by the  graph adjacency list.</p></li>
+  
 <li>
-
-<p>number of entries (4 bytes): how many adjacency lists are stored.</p>
-</li>
+<p>number of entries (4 bytes): how many adjacency lists are stored.</p></li>
+  
 <li>
-
-<p>checksum (4 bytes): a CRC2 checksum of the content of the graph file.</p>
-</li>
+<p>checksum (4 bytes): a CRC2 checksum of the content of the graph file.</p></li>
 </ul>
 <p>Immediately after the graph header, the graph adjacency list is stored. The storage scheme used is the following:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>UUID of the source segment.</p>
-</li>
+<p>UUID of the source segment.</p></li>
+  
 <li>
-
-<p>size of the adjacency list of the source segment.</p>
-</li>
+<p>size of the adjacency list of the source segment.</p></li>
+  
 <li>
-
-<p>an unordered enumeration of UUIDs representing target segments referenced by the source segment.</p>
-</li>
+<p>an unordered enumeration of UUIDs representing target segments referenced by  the source segment.</p></li>
 </ul></div>
 <div class="section">
 <h2><a name="Index_files"></a>Index files</h2>
 <p>The index file is an ordered list of references to the entries contained in the TAR file. The references are ordered by UUID and they point to the position in the file where the entry is stored. Like the graph file, the index file is also stored backwards.</p>
 <p>The index file is divided in two parts. The first is an index header, the second contains the real data about the index.</p>
 <p>The index header contains the following fields:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>a magic number (4 bytes): identifies the beginning of an index file.</p>
-</li>
+<p>a magic number (4 bytes): identifies the beginning of an index file.</p></li>
+  
 <li>
-
-<p>size for the index (4 bytes): number of bytes occupied by the index data. This size also contains padding bytes that are added to the index to make it align with the TAR block boundary.</p>
-</li>
+<p>size for the index (4 bytes): number of bytes occupied by the index data. This  size also contains padding bytes that are added to the index to make it align  with the TAR block boundary.</p></li>
+  
 <li>
-
-<p>number of entries (4 bytes): how many entries the index contains.</p>
-</li>
+<p>number of entries (4 bytes): how many entries the index contains.</p></li>
+  
 <li>
-
-<p>checksum (4 bytes): a CRC32 checksum of the content of the index file.</p>
-</li>
+<p>checksum (4 bytes): a CRC32 checksum of the content of the index file.</p></li>
 </ul>
 <p>After the header, the content of the index starts. For every entry contained in the index, the following information is stored:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>the most significant bits of the UUID (8 bytes).</p>
-</li>
+<p>the most significant bits of the UUID (8 bytes).</p></li>
+  
 <li>
-
-<p>the least significant bits of the UUID (8 bytes).</p>
-</li>
+<p>the least significant bits of the UUID (8 bytes).</p></li>
+  
 <li>
-
-<p>the offset in the TAR file where the TAR entry containing the segment is located.</p>
-</li>
+<p>the offset in the TAR file where the TAR entry containing the segment is  located.</p></li>
+  
 <li>
-
-<p>the size of the entry in the TAR file.</p>
-</li>
+<p>the size of the entry in the TAR file.</p></li>
+  
 <li>
-
-<p>the generation of the entry.</p>
-</li>
+<p>the generation of the entry.</p></li>
 </ul>
 <p>Since the entries in the index are sorted by UUID, and since the UUIDs assigned to the entries are uniformly distributed, when searching an entry by its UUID an efficient algorithm called interpolation search can be used. This algorithm is a variation of binary search. While in binary search the search space (in this case, the array of entry) is halved at every iteration, interpolation search exploits the distribution of the keys to remove a portion of the search space that is potentially bigger than the half of it. Interpolation search is a more natural approximation of the way a person searches in a phone book. If the name to search begins with the letter T, in example, it makes no sense to open the phone book at the half. It is way more efficient, instead, to open the phone book close to the bottom quarter, since names starting with the letter T are more likely to be distributed in that part of the phone book.</p></div>
         </div>

Modified: jackrabbit/site/live/oak/docs/nodestore/segmentmk.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/nodestore/segmentmk.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/nodestore/segmentmk.html (original)
+++ jackrabbit/site/live/oak/docs/nodestore/segmentmk.html Fri Nov  9 09:44:19 2018
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-09-19 
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-21 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180919" />
+    <meta name="Date-Revision-yyyymmdd" content="20180221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Segment Storage Design Overview</title>
     <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
-            <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
             <li><a href="../oak_api/overview.html" title="Oak API">Oak API</a></li>
         </ul>
       </li>
@@ -67,12 +66,7 @@
                   <li><a href="../nodestore/compositens.html" title="Composite NodeStore">Composite NodeStore</a></li>
               </ul>
             </li>
-            <li class="dropdown-submenu">
-<a href="../plugins/blobstore.html" title="Blob Storage">Blob Storage</a>
-              <ul class="dropdown-menu">
-                  <li><a href="../features/direct-binary-access.html" title="Direct Binary Access">Direct Binary Access</a></li>
-              </ul>
-            </li>
+            <li><a href="../plugins/blobstore.html" title="Blob Storage">Blob Storage</a></li>
             <li class="dropdown-submenu">
 <a href="../query/query.html" title="Query">Query</a>
               <ul class="dropdown-menu">
@@ -142,7 +136,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-09-19<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-02-21<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -161,14 +155,12 @@
     <li><a href="../architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a>  </li>
           <li class="nav-header">Main APIs</li>
     <li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a>  </li>
-    <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a>  </li>
     <li><a href="../oak_api/overview.html" title="Oak API"><span class="none"></span>Oak API</a>  </li>
           <li class="nav-header">Features and Plugins</li>
     <li><a href="../nodestore/overview.html" title="Node Storage"><span class="icon-chevron-down"></span>Node Storage</a>
       <ul class="nav nav-list">
     <li><a href="../nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
       <ul class="nav nav-list">
-    <li><a href="../nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a>  </li>
     <li><a href="../nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a>  </li>
     <li><a href="../nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a>  </li>
     <li><a href="../nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a>  </li>
@@ -179,11 +171,7 @@
     <li><a href="../nodestore/compositens.html" title="Composite NodeStore"><span class="none"></span>Composite NodeStore</a>  </li>
       </ul>
   </li>
-    <li><a href="../plugins/blobstore.html" title="Blob Storage"><span class="icon-chevron-down"></span>Blob Storage</a>
-      <ul class="nav nav-list">
-    <li><a href="../features/direct-binary-access.html" title="Direct Binary Access"><span class="none"></span>Direct Binary Access</a>  </li>
-      </ul>
-  </li>
+    <li><a href="../plugins/blobstore.html" title="Blob Storage"><span class="none"></span>Blob Storage</a>  </li>
     <li><a href="../query/query.html" title="Query"><span class="icon-chevron-down"></span>Query</a>
       <ul class="nav nav-list">
     <li><a href="../query/query-engine.html" title="Query Engine"><span class="none"></span>Query Engine</a>  </li>
@@ -251,33 +239,31 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-  -->
-<h1>Segment Storage Design Overview</h1>
+  --><h1>Segment Storage Design Overview</h1>
 <p><i>NOTE:</i> The information on this page applies to an older version of the TarMK and is mainly of historical interest. For the documentation of the current versions see <a href="segment/overview.html">Oak Segment Tar</a>.</p>
 <p>The SegmentNodeStore is an Oak storage backend that stores content as various types of <i>records</i> within larger <i>segments</i>. One or more <i>journals</i> are used to track the latest state of the repository. In the Tar implementation only one &#x201c;root&#x201d; journal is used.</p>
 <p>The SegmentNodeStore was designed from the ground up based on the following key principles:</p>
-<ul>
 
+<ul>
+  
 <li>
-
-<p>Immutability. Segments are immutable, which makes is easy to cache frequently accessed segments. This also makes it less likely for programming or system errors to cause repository inconsistencies, and simplifies features like backups or master-slave clustering.</p>
-</li>
+<p>Immutability. Segments are immutable, which makes is easy to cache frequently accessed segments. This also makes it less likely for programming or system errors to cause repository inconsistencies, and simplifies features like backups or master-slave clustering.</p></li>
+  
 <li>
-
-<p>Compactness. The formatting of records is optimized for size to reduce IO costs and to fit as much content in caches as possible. A node stored in SegmentNodeStore typically consumes only a fraction of the size it would as a bundle in Jackrabbit Classic.</p>
-</li>
+<p>Compactness. The formatting of records is optimized for size to reduce IO costs and to fit as much content in caches as possible. A node stored in SegmentNodeStore typically consumes only a fraction of the size it would as a bundle in Jackrabbit Classic.</p></li>
+  
 <li>
-
-<p>Locality. Segments are written so that related records, like a node and its immediate children, usually end up stored in the same segment. This makes tree traversals very fast and avoids most cache misses for typical clients that access more than one related node per session.</p>
-</li>
+<p>Locality. Segments are written so that related records, like a node and its immediate children, usually end up stored in the same segment. This makes tree traversals very fast and avoids most cache misses for typical clients that access more than one related node per session.</p></li>
 </ul>
 <p>This document describes the overall design of the SegmentNodeStore. See the source code and javadocs in <tt>org.apache.jackrabbit.oak.plugins.segment</tt> for full details.</p>
 <h1>Segments</h1>
 <p>The content tree and all its revisions are stored in a collection of immutable segments. Each segment is identified by a UUID and typically contains a continuous subset of the content tree, for example a node with its properties and closest child nodes. Some segments might also be used to store commonly occurring property values or other shared data. Segments can be to up to 256KiB in size.</p>
 <p>Segments come in two types: data and bulk segments. The type of a segment is encoded in its UUID and can thus be determined already before reading the segment. The following bit patterns are used (each <tt>x</tt> represents four random bits):</p>
-<ul>
 
+<ul>
+  
 <li><tt>xxxxxxxx-xxxx-4xxx-axxx-xxxxxxxxxxxx</tt> data segment UUID</li>
+  
 <li><tt>xxxxxxxx-xxxx-4xxx-bxxx-xxxxxxxxxxxx</tt> bulk segment UUID</li>
 </ul>
 <p>(This encoding makes segment UUIDs appear as syntactically valid version 4 random UUIDs specified in RFC 4122.)</p>
@@ -285,27 +271,22 @@
 <h2><a name="Bulk_segments"></a>Bulk segments</h2>
 <p>Bulk segments contain raw binary data, interpreted simply as a sequence of block records with no headers or other extra metadata:</p>
 
-<div>
-<div>
-<pre class="source">[block 1] [block 2] ... [block N]
+<div class="source">
+<div class="source"><pre class="prettyprint">[block 1] [block 2] ... [block N]
 </pre></div></div>
-
 <p>A bulk segment whose length is <tt>n</tt> bytes consists of <tt>n div 4096</tt> block records of 4KiB each followed possibly a block record of <tt>n mod 4096</tt> bytes, if there still are remaining bytes in the segment. The structure of a bulk segment can thus be determined based only on the segment length.</p></div>
 <div class="section">
 <h2><a name="Data_segments"></a>Data segments</h2>
 <p>A data segment can contain any types of records, may refer to content in other segments, and comes with a segment header that guides the parsing of the segment. The overall structure of a data segment is:</p>
 
-<div>
-<div>
-<pre class="source">[segment header] [record 1] [record 2] ... [record N]
+<div class="source">
+<div class="source"><pre class="prettyprint">[segment header] [record 1] [record 2] ... [record N]
 </pre></div></div>
-
 <p>The header and each record is zero-padded to make their size a multiple of four bytes and to align the next record at a four-byte boundary.</p>
 <p>The segment header consists of the following fields:</p>
 
-<div>
-<div>
-<pre class="source">+--------+--------+--------+--------+--------+--------+--------+--------+
+<div class="source">
+<div class="source"><pre class="prettyprint">+--------+--------+--------+--------+--------+--------+--------+--------+
 | magic bytes: &quot;0aK&quot; ASCII |version |reserved|idcount |rootcount        |
 +--------+--------+--------+--------+--------+--------+--------+--------+
 | blobrefcount    | reserved (set to 0)                                 |
@@ -326,7 +307,6 @@
 |                                            | padding (set to 0)       |
 +--------+--------+--------+--------+--------+--------+--------+--------+
 </pre></div></div>
-
 <p>The first three bytes of a segment always contain the ASCII string &#x201c;0aK&#x201d;, which is intended to make the binary segment data format easily detectable. The next byte indicates the version of segment format, and is set to 10 for all segments that follow the format described here.</p>
 <p>The <tt>idcount</tt> byte indicates how many other segments are referenced by records within this segment. The identifiers of those segments are listed starting at offset 16 of the segment header. This lookup table of up to 255 segment identifiers is used to optimize garbage collection and to avoid having to repeat the 16-byte UUIDs whenever references to records in other segments are made.</p>
 <p>The 16-bit <tt>rootcount</tt> field indicates the number of root record references that follow after the segment identifier lookup table. The root record references are a debugging and recovery aid, that are not needed during normal operation. They identify the types and locations of those records within this segment that are not accessible by following references in other records within this segment. <s>These root references give enough context for parsing all records within a segment without any external information.</s> See <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-2498">OAK-2498</a>.</p>
@@ -343,13 +323,11 @@
 <p>The content inside a segment is divided in records of different types: blocks, lists, maps, values, templates and nodes. These record types and their internal structures are described in subsections below.</p>
 <p>Each record is uniquely addressable by its location within the segment and the UUID of that segment. A single segment can contain up to 256KiB of data and and references to up to 256 segments (including itself). Since all records are aligned at four-byte boundaries, 16 bits are needed to address all possible record locations within a segment. Thus only three bytes are needed to store a reference to any record in any segment (1 byte to identify the segment, 2 bytes for the record offset):</p>
 
-<div>
-<div>
-<pre class="source">+--------+--------+--------+
+<div class="source">
+<div class="source"><pre class="prettyprint">+--------+--------+--------+
 | refid  | offset          |
 +--------+--------+--------+
 </pre></div></div>
-
 <p>The <tt>refid</tt> filed is the number of the referenced segment identifier, with refid zero interpreted as a reference to the current segment and refids 1-255 the segment identifiers stored in the lookup table in the segment header.</p></div>
 <div class="section">
 <h2><a name="Block_records"></a>Block records</h2>
@@ -359,9 +337,8 @@
 <p>List records are used as components of more complex record types. Lists are used for storing arrays of values for multi-valued properties and sequences of blocks for large binary values.</p>
 <p>The list of references is split into pieces of up to 255 references each and those pieces are stored as records. If there are more than 255 pieces like that, then a higher-level list is created of references to those pieces. This process is continued until the resulting list has less than 255 entries.</p>
 
-<div>
-<div>
-<pre class="source">+--------+--------+--------+-----+
+<div class="source">
+<div class="source"><pre class="prettyprint">+--------+--------+--------+-----+
 | sub-list ID 1            | ... |
 +--------+--------+--------+-----+
   |
@@ -370,7 +347,6 @@
 | record ID 1              | ... | record ID 255            |
 +--------+--------+--------+-----+--------+--------+--------+
 </pre></div></div>
-
 <p>The result is a hierarchically stored immutable list where each element can be accessed in O(log N) time and the size overhead of updating or appending list elements (and thus creating a new immutable list) is also O(log N).</p></div>
 <div class="section">
 <h2><a name="Map_records"></a>Map records</h2>
@@ -383,32 +359,32 @@
 <p>Value records are byte arrays used for storing all names and values of the content tree. Since item names can be thought of as name values and since all JCR and Oak values can be expressed in binary form (strings encoded in UTF-8), it is easiest to simply use that form for storing all values. The size overhead of such a form for small value types like booleans or dates is amortized by the facts that those types are used only for a minority of values in typical content trees and that repeating copies of a value can be stored just once.</p>
 <p>There are four types of value records: small, medium, long and external. The small- and medium-sized values are stored in inline form, prepended by one or two bytes that indicate the length of the value. Long values of up to two exabytes (2^61) are stored as a list of block records. Finally an external value record contains the length of the value and a string reference (up to 4kB in length) to some external storage location.</p>
 <p>The type of a value record is encoded in the high-order bits of the first byte of the record. These bit patterns are:</p>
-<ul>
 
+<ul>
+  
 <li><tt>0xxxxxxx</tt>: small value, length (0 - 127 bytes) encoded in 7 bits</li>
+  
 <li><tt>10xxxxxx</tt>: medium value length (128 - 16511 bytes) encoded in 6 + 8 bits</li>
+  
 <li><tt>110xxxxx</tt>: long value, length (up to 2^61 bytes) encoded in 5 + 7*8 bits</li>
+  
 <li><tt>1110xxxx</tt>: external value, reference string length encoded in 4 + 8 bits</li>
 </ul></div>
 <div class="section">
 <h2><a name="Template_records"></a>Template records</h2>
 <p>A template record describes the common structure of a family of related nodes. Since the structures of most nodes in a typical content tree fall into a small set of common templates, it makes sense to store such templates separately instead of repeating that information separately for each node. For example, the property names and types as well as child node names of all nt:file nodes are typically the same. The presence of mixins and different subtypes increases the number of different templates, but they&#x2019;re typically still far fewer than nodes in the repository.</p>
 <p>A template record consists of a set of up to N (exact size TBD, N ~ 256) property name and type pairs. Additionally, since nodes that are empty or contain just a single child node are most common, a template record also contains information whether the node has zero, one or many child nodes. In case of a single child node, the template also contains the name of that node. For example, the template for typical mix:versionable nt:file nodes would be (using CND-like notation):</p>
-<ul>
 
-<li>jcr:primaryType (NAME)
-<ul>
-
-<li>jcr:mixinTypes (NAME) multiple</li>
-<li>jcr:created (DATE)</li>
-<li>jcr:uuid (STRING)</li>
-<li>jcr:versionHistory (REFERENCE)</li>
-<li>jcr:predecessors (REFERENCE) multiple</li>
-<li>jcr:baseVersion (REFERENCE)</li>
-<li>jcr:content</li>
-</ul>
-</li>
-</ul>
+<div class="source">
+<div class="source"><pre class="prettyprint">- jcr:primaryType (NAME)
+- jcr:mixinTypes (NAME) multiple
+- jcr:created (DATE)
+- jcr:uuid (STRING)
+- jcr:versionHistory (REFERENCE)
+- jcr:predecessors (REFERENCE) multiple
+- jcr:baseVersion (REFERENCE)
++ jcr:content
+</pre></div></div>
 <p>The names used in a template are stored as separate value records and included by reference. This way multiple templates that for example all contain the &#x201c;jcr:primaryType&#x201d; property name don&#x2019;t need to repeatedly store it.</p></div>
 <div class="section">
 <h2><a name="Node_records"></a>Node records</h2>
@@ -417,16 +393,25 @@
 <p>A node that contains more than N properties or M child nodes (exact size TBD, M ~ 1k) is stored differently, using map records for the properties and child nodes. This way a node can become arbitrarily large and still remain reasonably efficient to access and modify. The main downside of this alternative storage layout is that the ordering of child nodes is lost.</p>
 <h1>Tar</h1>
 <p>TODO:</p>
-<ul>
 
+<ul>
+  
 <li>tar entry checksums</li>
+  
 <li>graph and index entries</li>
+  
 <li>recovery mechanism</li>
+  
 <li>tar generations / cleanup</li>
+  
 <li>journal.log</li>
+  
 <li>compaction</li>
+  
 <li>cleanup</li>
+  
 <li>backup</li>
+  
 <li>slow startup / journal.log</li>
 </ul></div>
         </div>

Modified: jackrabbit/site/live/oak/docs/oak-mongo-js/index.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/oak-mongo-js/index.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/oak-mongo-js/index.html (original)
+++ jackrabbit/site/live/oak/docs/oak-mongo-js/index.html Fri Nov  9 09:44:19 2018
@@ -56,7 +56,7 @@
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Wed Sep 19 2018 09:25:36 GMT+0200 (CEST)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Tue Aug 21 2018 12:29:49 GMT+0200 (CEST)
 </footer>
 
 <script> prettyPrint(); </script>

Modified: jackrabbit/site/live/oak/docs/oak-mongo-js/oak-mongo.js.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/oak-mongo-js/oak-mongo.js.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/oak-mongo-js/oak-mongo.js.html (original)
+++ jackrabbit/site/live/oak/docs/oak-mongo-js/oak-mongo.js.html Fri Nov  9 09:44:19 2018
@@ -1105,7 +1105,7 @@ var oak = (function(global){
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Wed Sep 19 2018 09:25:36 GMT+0200 (CEST)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Tue Aug 21 2018 12:29:49 GMT+0200 (CEST)
 </footer>
 
 <script> prettyPrint(); </script>

Modified: jackrabbit/site/live/oak/docs/oak-mongo-js/oak.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/oak-mongo-js/oak.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/oak-mongo-js/oak.html (original)
+++ jackrabbit/site/live/oak/docs/oak-mongo-js/oak.html Fri Nov  9 09:44:19 2018
@@ -4114,7 +4114,7 @@ is inactive.
 <br class="clear">
 
 <footer>
-    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Wed Sep 19 2018 09:25:36 GMT+0200 (CEST)
+    Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Tue Aug 21 2018 12:29:49 GMT+0200 (CEST)
 </footer>
 
 <script> prettyPrint(); </script>

Modified: jackrabbit/site/live/oak/docs/oak_api/error_codes.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/oak_api/error_codes.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/oak_api/error_codes.html (original)
+++ jackrabbit/site/live/oak/docs/oak_api/error_codes.html Fri Nov  9 09:44:19 2018
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-09-19 
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-02-21 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180919" />
+    <meta name="Date-Revision-yyyymmdd" content="20180221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Error Codes</title>
     <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
-            <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
             <li><a href="../oak_api/overview.html" title="Oak API">Oak API</a></li>
         </ul>
       </li>
@@ -67,12 +66,7 @@
                   <li><a href="../nodestore/compositens.html" title="Composite NodeStore">Composite NodeStore</a></li>
               </ul>
             </li>
-            <li class="dropdown-submenu">
-<a href="../plugins/blobstore.html" title="Blob Storage">Blob Storage</a>
-              <ul class="dropdown-menu">
-                  <li><a href="../features/direct-binary-access.html" title="Direct Binary Access">Direct Binary Access</a></li>
-              </ul>
-            </li>
+            <li><a href="../plugins/blobstore.html" title="Blob Storage">Blob Storage</a></li>
             <li class="dropdown-submenu">
 <a href="../query/query.html" title="Query">Query</a>
               <ul class="dropdown-menu">
@@ -142,7 +136,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-09-19<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-02-21<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -161,14 +155,12 @@
     <li><a href="../architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a>  </li>
           <li class="nav-header">Main APIs</li>
     <li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a>  </li>
-    <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a>  </li>
     <li><a href="../oak_api/overview.html" title="Oak API"><span class="none"></span>Oak API</a>  </li>
           <li class="nav-header">Features and Plugins</li>
     <li><a href="../nodestore/overview.html" title="Node Storage"><span class="icon-chevron-down"></span>Node Storage</a>
       <ul class="nav nav-list">
     <li><a href="../nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
       <ul class="nav nav-list">
-    <li><a href="../nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a>  </li>
     <li><a href="../nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a>  </li>
     <li><a href="../nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a>  </li>
     <li><a href="../nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a>  </li>
@@ -179,11 +171,7 @@
     <li><a href="../nodestore/compositens.html" title="Composite NodeStore"><span class="none"></span>Composite NodeStore</a>  </li>
       </ul>
   </li>
-    <li><a href="../plugins/blobstore.html" title="Blob Storage"><span class="icon-chevron-down"></span>Blob Storage</a>
-      <ul class="nav nav-list">
-    <li><a href="../features/direct-binary-access.html" title="Direct Binary Access"><span class="none"></span>Direct Binary Access</a>  </li>
-      </ul>
-  </li>
+    <li><a href="../plugins/blobstore.html" title="Blob Storage"><span class="none"></span>Blob Storage</a>  </li>
     <li><a href="../query/query.html" title="Query"><span class="icon-chevron-down"></span>Query</a>
       <ul class="nav nav-list">
     <li><a href="../query/query-engine.html" title="Query Engine"><span class="none"></span>Query Engine</a>  </li>
@@ -251,66 +239,117 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-  -->
-<h1>Error Codes</h1>
+  --><h1>Error Codes</h1>
 <p>Since <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-764">OAK-764</a> the CommitFailedExceptions thrown by commit hooks in Oak come with error codes that help identify the cause of a problem and locate additional information about the issue. This page is an informal registry of common error codes.</p>
 <div class="section">
 <div class="section">
 <h3><a name="Type_Constraint"></a>Type Constraint</h3>
 <div class="section">
 <h4><a name="Node_type_validation"></a>Node type validation</h4>
-<table border="0" class="table table-striped">
-<thead>
 
+<table border="0" class="table table-striped">
+  <thead>
+    
 <tr class="a">
-<th> OakConstraint000x </th>
-<th> Primary and mixin type information                       </th></tr>
-</thead><tbody>
-
+      
+<th>OakConstraint000x </th>
+      
+<th>Primary and mixin type information </th>
+    </tr>
+  </thead>
+  <tbody>
+    
 <tr class="b">
-<td> 0001              </td>
-<td> The primary type X does not exist                        </td></tr>
+      
+<td>0001 </td>
+      
+<td>The primary type X does not exist </td>
+    </tr>
+    
 <tr class="a">
-<td> 0002              </td>
-<td> Mixin type X used as the primary type                    </td></tr>
+      
+<td>0002 </td>
+      
+<td>Mixin type X used as the primary type </td>
+    </tr>
+    
 <tr class="b">
-<td> 0003              </td>
-<td> Abstract type X used as the primary type                 </td></tr>
+      
+<td>0003 </td>
+      
+<td>Abstract type X used as the primary type </td>
+    </tr>
+    
 <tr class="a">
-<td> 0004              </td>
-<td> No default primary type available for child node X       </td></tr>
+      
+<td>0004 </td>
+      
+<td>No default primary type available for child node X </td>
+    </tr>
+    
 <tr class="b">
-<td> 0005              </td>
-<td> The mixin type X does not exist                          </td></tr>
+      
+<td>0005 </td>
+      
+<td>The mixin type X does not exist </td>
+    </tr>
+    
 <tr class="a">
-<td> 0006              </td>
-<td> Primary type X used as a mixin type                      </td></tr>
+      
+<td>0006 </td>
+      
+<td>Primary type X used as a mixin type </td>
+    </tr>
+    
 <tr class="b">
-<td> 0007              </td>
-<td> Abstract type X used as a mixin type                     </td></tr>
-</tbody>
+      
+<td>0007 </td>
+      
+<td>Abstract type X used as a mixin type </td>
+    </tr>
+  </tbody>
 </table>
-<table border="0" class="table table-striped">
-<thead>
 
+<table border="0" class="table table-striped">
+  <thead>
+    
 <tr class="a">
-<th> OakConstraint002x </th>
-<th> Presence of mandatory items                              </th></tr>
-</thead><tbody>
-
+      
+<th>OakConstraint002x </th>
+      
+<th>Presence of mandatory items </th>
+    </tr>
+  </thead>
+  <tbody>
+    
 <tr class="b">
-<td> 0021              </td>
-<td> Mandatory property X not included in a new node          </td></tr>
+      
+<td>0021 </td>
+      
+<td>Mandatory property X not included in a new node </td>
+    </tr>
+    
 <tr class="a">
-<td> 0022              </td>
-<td> Mandatory property X can not be removed                  </td></tr>
+      
+<td>0022 </td>
+      
+<td>Mandatory property X can not be removed </td>
+    </tr>
+    
 <tr class="b">
-<td> 0025              </td>
-<td> Mandatory child node X not included in a new node        </td></tr>
+      
+<td>0025 </td>
+      
+<td>Mandatory child node X not included in a new node </td>
+    </tr>
+    
 <tr class="a">
-<td> 0026              </td>
-<td> Mandatory child node X can not be removed                </td></tr>
-</tbody>
+      
+<td>0026 </td>
+      
+<td>Mandatory child node X can not be removed </td>
+    </tr>
+  </tbody>
 </table></div>
 <div class="section">
 <h4><a name="User_Validation"></a>User Validation</h4>
@@ -333,7 +372,8 @@
 <p>see section <a href="../security/accesscontrol/default.html#validation">Access Control Management</a></p></div>
 <div class="section">
 <h4><a name="CUG_Validation"></a>CUG Validation</h4>
-<p>see section <a href="../security/authorization/cug.html#validation">Closed User Groups</a></p><!-- hidden references --></div></div></div>
+<p>see section <a href="../security/authorization/cug.html#validation">Closed User Groups</a></p>
+<!-- hidden references --></div></div></div>
         </div>
       </div>
     </div>

Modified: jackrabbit/site/live/oak/docs/oak_api/overview.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/oak_api/overview.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/oak_api/overview.html (original)
+++ jackrabbit/site/live/oak/docs/oak_api/overview.html Fri Nov  9 09:44:19 2018
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-09-19 
+ | Generated by Apache Maven Doxia Site Renderer 1.7.4 at 2018-03-27 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180919" />
+    <meta name="Date-Revision-yyyymmdd" content="20180327" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Oak API</title>
     <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
@@ -52,7 +52,6 @@
         <a href="#" class="dropdown-toggle" data-toggle="dropdown">Main APIs <b class="caret"></b></a>
         <ul class="dropdown-menu">
             <li><a href="http://www.day.com/specs/jcr/2.0/index.html" title="JCR API">JCR API</a></li>
-            <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" title="Jackrabbit API">Jackrabbit API</a></li>
             <li><a href="../oak_api/overview.html" title="Oak API">Oak API</a></li>
         </ul>
       </li>
@@ -67,12 +66,7 @@
                   <li><a href="../nodestore/compositens.html" title="Composite NodeStore">Composite NodeStore</a></li>
               </ul>
             </li>
-            <li class="dropdown-submenu">
-<a href="../plugins/blobstore.html" title="Blob Storage">Blob Storage</a>
-              <ul class="dropdown-menu">
-                  <li><a href="../features/direct-binary-access.html" title="Direct Binary Access">Direct Binary Access</a></li>
-              </ul>
-            </li>
+            <li><a href="../plugins/blobstore.html" title="Blob Storage">Blob Storage</a></li>
             <li class="dropdown-submenu">
 <a href="../query/query.html" title="Query">Query</a>
               <ul class="dropdown-menu">
@@ -142,7 +136,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-09-19<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-03-27<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -161,7 +155,6 @@
     <li><a href="../architecture/nodestate.html" title="The Node State Model"><span class="none"></span>The Node State Model</a>  </li>
           <li class="nav-header">Main APIs</li>
     <li><a href="http://www.day.com/specs/jcr/2.0/index.html" class="externalLink" title="JCR API"><span class="none"></span>JCR API</a>  </li>
-    <li><a href="https://jackrabbit.apache.org/jcr/jcr-api.html" class="externalLink" title="Jackrabbit API"><span class="none"></span>Jackrabbit API</a>  </li>
     <li class="active"><a href="#"><span class="none"></span>Oak API</a>
   </li>
           <li class="nav-header">Features and Plugins</li>
@@ -169,7 +162,6 @@
       <ul class="nav nav-list">
     <li><a href="../nodestore/documentmk.html" title="Document NodeStore"><span class="icon-chevron-down"></span>Document NodeStore</a>
       <ul class="nav nav-list">
-    <li><a href="../nodestore/document/mongo-document-store.html" title="MongoDB DocumentStore"><span class="none"></span>MongoDB DocumentStore</a>  </li>
     <li><a href="../nodestore/document/node-bundling.html" title="Node Bundling"><span class="none"></span>Node Bundling</a>  </li>
     <li><a href="../nodestore/document/secondary-store.html" title="Secondary Store"><span class="none"></span>Secondary Store</a>  </li>
     <li><a href="../nodestore/persistent-cache.html" title="Persistent Cache"><span class="none"></span>Persistent Cache</a>  </li>
@@ -180,11 +172,7 @@
     <li><a href="../nodestore/compositens.html" title="Composite NodeStore"><span class="none"></span>Composite NodeStore</a>  </li>
       </ul>
   </li>
-    <li><a href="../plugins/blobstore.html" title="Blob Storage"><span class="icon-chevron-down"></span>Blob Storage</a>
-      <ul class="nav nav-list">
-    <li><a href="../features/direct-binary-access.html" title="Direct Binary Access"><span class="none"></span>Direct Binary Access</a>  </li>
-      </ul>
-  </li>
+    <li><a href="../plugins/blobstore.html" title="Blob Storage"><span class="none"></span>Blob Storage</a>  </li>
     <li><a href="../query/query.html" title="Query"><span class="icon-chevron-down"></span>Query</a>
       <ul class="nav nav-list">
     <li><a href="../query/query-engine.html" title="Query Engine"><span class="none"></span>Query Engine</a>  </li>
@@ -252,68 +240,99 @@
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-  -->
-<div class="section">
+  --><div class="section">
 <h2><a name="Oak_API"></a>Oak API</h2>
-<ul>
 
+<ul>
+  
 <li><a href="../apidocs/">Javadocs</a> (latest release)</li>
+  
 <li>Javadoc of previous releases are available from <a class="externalLink" href="http://www.javadoc.io/">javadoc.io</a>:
+  
 <ul>
-
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-jcr/">oak-jcr</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-core/">oak-core</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-run/">oak-run</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-upgrade/">oak-upgrade</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-commons/">oak-commons</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-blob/">oak-blob</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-blob-cloud/">oak-blob-cloud</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-http/">oak-http</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-lucene/">oak-lucene</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-solr-core/">oak-solr-core</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-solr-osgi/">oak-solr-osgi</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-auth-external/">oak-auth-external</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-auth-ldap/">oak-auth-ldap</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-segment-tar/">oak-segment-tar</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-authorization-cug/">oak-authorization-cug</a></li>
+    
 <li><a class="externalLink" href="http://www.javadoc.io/doc/org.apache.jackrabbit/oak-exercise/">oak-exercise</a></li>
-</ul>
-</li>
+  </ul></li>
 </ul>
 <div class="section">
 <h3><a name="Key_API_entry_points"></a>Key API entry points</h3>
-<ul>
 
+<ul>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/ContentRepository.html">ContentRepository</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/ContentSession.html">ContentSession</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/Root.html">Root</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/Tree.html">Tree</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/PropertyState.html">PropertyState</a></li>
 </ul>
 <div class="section">
 <h4><a name="Values"></a>Values</h4>
-<ul>
 
+<ul>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/PropertyValue.html">PropertyValue</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/Type.html">Type</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/Blob.html">Blob</a></li>
 </ul></div>
 <div class="section">
 <h4><a name="Query"></a>Query</h4>
-<ul>
 
+<ul>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/QueryEngine.html">QueryEngine</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/Query.html">Query</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/ResultRow.html">ResultRow</a></li>
 </ul></div>
 <div class="section">
 <h4><a name="Various"></a>Various</h4>
-<ul>
 
+<ul>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/AuthInfo.html">AuthInfo</a> : see section <a href="../security/authentication.html">Authentication</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/Descriptors.html">Descriptors</a></li>
+  
 <li><a href="/oak/docs/apidocs/org/apache/jackrabbit/oak/api/CommitFailedException.html">CommitFailedException</a> : see also <a href="error_codes.html">Error Codes</a></li>
-</ul><!-- hidden references --></div></div></div>
+</ul>
+<!-- hidden references --></div></div></div>
         </div>
       </div>
     </div>

Modified: jackrabbit/site/live/oak/docs/osgi_config.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/osgi_config.html?rev=1846222&r1=1846221&r2=1846222&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/osgi_config.html (original)
+++ jackrabbit/site/live/oak/docs/osgi_config.html Fri Nov  9 09:44:19 2018
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-09-19 
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2018-08-21 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180919" />
+    <meta name="Date-Revision-yyyymmdd" content="20180821" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Repository OSGi Configuration</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.6.min.css" />
@@ -67,12 +67,7 @@
                   <li><a href="nodestore/compositens.html" title="Composite NodeStore">Composite NodeStore</a></li>
               </ul>
             </li>
-            <li class="dropdown-submenu">
-<a href="plugins/blobstore.html" title="Blob Storage">Blob Storage</a>
-              <ul class="dropdown-menu">
-                  <li><a href="features/direct-binary-access.html" title="Direct Binary Access">Direct Binary Access</a></li>
-              </ul>
-            </li>
+            <li><a href="plugins/blobstore.html" title="Blob Storage">Blob Storage</a></li>
             <li class="dropdown-submenu">
 <a href="query/query.html" title="Query">Query</a>
               <ul class="dropdown-menu">
@@ -142,7 +137,7 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2018-09-19<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2018-08-21<span class="divider">|</span>
 </li>
           <li id="projectVersion">Version: 1.10-SNAPSHOT</li>
         </ul>
@@ -179,11 +174,7 @@
     <li><a href="nodestore/compositens.html" title="Composite NodeStore"><span class="none"></span>Composite NodeStore</a>  </li>
       </ul>
   </li>
-    <li><a href="plugins/blobstore.html" title="Blob Storage"><span class="icon-chevron-down"></span>Blob Storage</a>
-      <ul class="nav nav-list">
-    <li><a href="features/direct-binary-access.html" title="Direct Binary Access"><span class="none"></span>Direct Binary Access</a>  </li>
-      </ul>
-  </li>
+    <li><a href="plugins/blobstore.html" title="Blob Storage"><span class="none"></span>Blob Storage</a>  </li>
     <li><a href="query/query.html" title="Query"><span class="icon-chevron-down"></span>Query</a>
       <ul class="nav nav-list">
     <li><a href="query/query-engine.html" title="Query Engine"><span class="none"></span>Query Engine</a>  </li>