diff --git a/datafusion/core/src/datasource/object_store.rs b/datafusion/core/src/datasource/object_store.rs index 65f3900091e62..3ec3a6639b439 100644 --- a/datafusion/core/src/datasource/object_store.rs +++ b/datafusion/core/src/datasource/object_store.rs @@ -89,10 +89,9 @@ pub trait ObjectStoreProvider: Send + Sync + 'static { } /// Object store registry -#[derive(Clone)] pub struct ObjectStoreRegistry { /// A map from scheme to object store that serve list / read operations for the store - object_stores: Arc>>>, + object_stores: RwLock>>, provider: Option>, } @@ -125,7 +124,7 @@ impl ObjectStoreRegistry { let mut map: HashMap> = HashMap::new(); map.insert("file://".to_string(), Arc::new(LocalFileSystem::new())); Self { - object_stores: Arc::new(RwLock::new(map)), + object_stores: RwLock::new(map), provider, } } diff --git a/datafusion/core/src/execution/runtime_env.rs b/datafusion/core/src/execution/runtime_env.rs index 36159db8e8029..87375b733bc9c 100644 --- a/datafusion/core/src/execution/runtime_env.rs +++ b/datafusion/core/src/execution/runtime_env.rs @@ -63,7 +63,7 @@ impl RuntimeEnv { Ok(Self { memory_manager: MemoryManager::new(memory_manager), disk_manager: DiskManager::try_new(disk_manager)?, - object_store_registry: Arc::new(object_store_registry), + object_store_registry, }) } @@ -123,7 +123,7 @@ pub struct RuntimeConfig { /// MemoryManager to limit access to memory pub memory_manager: MemoryManagerConfig, /// ObjectStoreRegistry to get object store based on url - pub object_store_registry: ObjectStoreRegistry, + pub object_store_registry: Arc, } impl RuntimeConfig { @@ -147,7 +147,7 @@ impl RuntimeConfig { /// Customize object store registry pub fn with_object_store_registry( mut self, - object_store_registry: ObjectStoreRegistry, + object_store_registry: Arc, ) -> Self { self.object_store_registry = object_store_registry; self