This is an automated email from the ASF dual-hosted git repository.

tustvold pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/master by this push:
     new 9949dfe22e8 chore: implement error handling for object_store (#5889)
9949dfe22e8 is described below

commit 9949dfe22e82b7aae6e6890a016218afc717ce8f
Author: Abhi Agarwal <[email protected]>
AuthorDate: Fri Jun 14 17:23:05 2024 -0400

    chore: implement error handling for object_store (#5889)
---
 parquet/src/arrow/async_reader/store.rs | 10 +++-------
 parquet/src/errors.rs                   |  7 +++++++
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/parquet/src/arrow/async_reader/store.rs 
b/parquet/src/arrow/async_reader/store.rs
index 293b91aea3b..77c00e91a3a 100644
--- a/parquet/src/arrow/async_reader/store.rs
+++ b/parquet/src/arrow/async_reader/store.rs
@@ -25,7 +25,7 @@ use futures::{FutureExt, TryFutureExt};
 use object_store::{ObjectMeta, ObjectStore};
 
 use crate::arrow::async_reader::{AsyncFileReader, MetadataLoader};
-use crate::errors::{ParquetError, Result};
+use crate::errors::Result;
 use crate::file::metadata::ParquetMetaData;
 
 /// Reads Parquet files in object storage using [`ObjectStore`].
@@ -105,7 +105,7 @@ impl AsyncFileReader for ParquetObjectReader {
     fn get_bytes(&mut self, range: Range<usize>) -> BoxFuture<'_, 
Result<Bytes>> {
         self.store
             .get_range(&self.meta.location, range)
-            .map_err(|e| 
ParquetError::General(format!("AsyncChunkReader::get_bytes error: {e}")))
+            .map_err(|e| e.into())
             .boxed()
     }
 
@@ -117,11 +117,7 @@ impl AsyncFileReader for ParquetObjectReader {
             self.store
                 .get_ranges(&self.meta.location, &ranges)
                 .await
-                .map_err(|e| {
-                    ParquetError::General(format!(
-                        "ParquetObjectReader::get_byte_ranges error: {e}"
-                    ))
-                })
+                .map_err(|e| e.into())
         }
         .boxed()
     }
diff --git a/parquet/src/errors.rs b/parquet/src/errors.rs
index 0b70266b301..a242c976851 100644
--- a/parquet/src/errors.rs
+++ b/parquet/src/errors.rs
@@ -112,6 +112,13 @@ impl From<ArrowError> for ParquetError {
     }
 }
 
+#[cfg(feature = "object_store")]
+impl From<object_store::Error> for ParquetError {
+    fn from(e: object_store::Error) -> ParquetError {
+        ParquetError::External(Box::new(e))
+    }
+}
+
 /// A specialized `Result` for Parquet errors.
 pub type Result<T, E = ParquetError> = result::Result<T, E>;
 

Reply via email to