You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2012/05/31 16:34:20 UTC

svn commit: r1344746 - /jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java

Author: thomasm
Date: Thu May 31 14:34:20 2012
New Revision: 1344746

URL: http://svn.apache.org/viewvc?rev=1344746&view=rev
Log:
OAK-120 MicroKernel API: specific retention policy of binaries

Modified:
    jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java

Modified: jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java?rev=1344746&r1=1344745&r2=1344746&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java (original)
+++ jackrabbit/oak/trunk/oak-mk/src/main/java/org/apache/jackrabbit/mk/api/MicroKernel.java Thu May 31 14:34:20 2012
@@ -19,7 +19,7 @@ package org.apache.jackrabbit.mk.api;
 import java.io.InputStream;
 
 /**
- * The MicroKernel <b>design goals/principles</b>:
+ * The MicroKernel <b>Design Goals and Principles</b>:
  * <ul>
  * <li>manage huge trees of nodes and properties efficiently</li>
  * <li>MVCC-based concurrency control
@@ -32,8 +32,9 @@ import java.io.InputStream;
  * <li>integrated API for efficiently storing/retrieving large binaries</li>
  * <li>human-readable data serialization (JSON)</li>
  * </ul>
- * <p/>
+ * <p>
  * The MicroKernel <b>Data Model</b>:
+ * </p>
  * <ul>
  * <li>simple JSON-inspired data model: just nodes and properties</li>
  * <li>a node consists of an unordered set of name -&gt; item mappings. each
@@ -43,7 +44,27 @@ import java.io.InputStream;
  * <li>supported property types: string, number, boolean, array</li>
  * <li>a property value is stored and used as an opaque, unparsed character sequence</li>
  * </ul>
+ * <p>
+ * The <b>Retention Policy for Revisions</b>:
+ * <p>
  * TODO specify retention policy for old revisions, i.e. minimal guaranteed retention period (OAK-114)
+ * </p>
+ * <p>
+ * The <b>Retention Policy for Binaries</b>:
+ * </p>
+ * <p>
+ * The MicroKernel implementation is free to remove binaries if both of the
+ * following conditions are met:
+ * </p>
+ * <ul>
+ * <li>If the binary is not references as a property value of the
+ * format ":blobId:&lt;blobId&gt;" where &lt;blobId&gt; is the id returned by
+ * {@link write(InputStream in)}. This includes simple property values such as
+ * {"bin": ":blobId:1234"} as well as array property values such as
+ * {"array": [":blobId:1234", ":blobId:5678"]}.</li>
+ * <li>If the binary was stored before the last retained revision (this is to
+ * keep temporary binaries, and binaries that are not yet referenced).</li>
+ * </ul>
  */
 public interface MicroKernel {