alamb commented on code in PR #3791:
URL: https://github.com/apache/arrow-rs/pull/3791#discussion_r1123428450


##########
object_store/src/lib.rs:
##########
@@ -306,6 +312,33 @@ pub trait ObjectStore: std::fmt::Display + Send + Sync + 
Debug + 'static {
         multipart_id: &MultipartId,
     ) -> Result<()>;
 
+    /// Returns an [`AsyncWrite`] that can be used to append to the object at 
`location`
+    ///
+    /// A new object will be created if it doesn't already exist, otherwise it 
will be
+    /// opened, with subsequent writes appended to the end.
+    ///
+    /// This operation cannot be supported by all stores, most use-cases 
should prefer
+    /// [`ObjectStore::put`] and [`ObjectStore::put_multipart`] for better 
portability
+    /// and stronger guarantees
+    ///
+    /// This API is not guaranteed to be atomic, in particular
+    ///
+    /// * On error, `location` may contain partial data
+    /// * Concurrent calls to [`ObjectStore::list`] may return partially 
written objects
+    /// * Concurrent calls to [`ObjectStore::get`] may return partially 
written data
+    /// * Concurrent calls to [`ObjectStore::put`] may result in data loss / 
corruption
+    /// * Concurrent calls to [`ObjectStore::append`] may result in data loss 
/ corruption
+    ///
+    /// Additionally some stores, such as Azure, may only support appending to 
objects created

Review Comment:
   👍 the docstrings make a lot of sense -- thank you for spelling it out so 
clearly



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to