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>;