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 -> 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:<blobId>" where <blobId> 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 {