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 mr...@apache.org on 2014/04/07 09:34:58 UTC

svn commit: r1585420 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java

Author: mreutegg
Date: Mon Apr  7 07:34:58 2014
New Revision: 1585420

URL: http://svn.apache.org/r1585420
Log:
OAK-1678: document atomicity of DS.remove(collection, keys)

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java?rev=1585420&r1=1585419&r2=1585420&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentStore.java Mon Apr  7 07:34:58 2014
@@ -26,6 +26,13 @@ import org.apache.jackrabbit.mk.api.Micr
 /**
  * The interface for the backend storage for documents.
  * <p>
+ * In general atomicity of operations on a DocumentStore are limited to a single
+ * document. That is, an implementation does not have to guarantee atomicity of
+ * the entire effect of a method call. A method that fails with an exception may
+ * have modified just some documents and then abort. However, an implementation
+ * must not modify a document partially. Either the complete update operation
+ * is applied to a document or no modification is done at all.
+ * <p>
  * For keys, the maximum length is 512 bytes in the UTF-8 representation.
  */
 public interface DocumentStore {
@@ -105,7 +112,8 @@ public interface DocumentStore {
                                        int limit);
 
     /**
-     * Remove a document.
+     * Remove a document. This method does nothing if there is no document
+     * with the given key.
      *
      * @param <T> the document type
      * @param collection the collection
@@ -114,7 +122,10 @@ public interface DocumentStore {
     <T extends Document> void remove(Collection<T> collection, String key);
 
     /**
-     * Batch remove documents with given key.
+     * Batch remove documents with given key. Keys for documents that do not
+     * exist are simply ignored. If this method fails with an exception, then
+     * only some of the documents identified by {@code keys} may have been
+     * removed.
      *
      * @param <T> the document type
      * @param collection the collection