crepererum opened a new issue #680:
URL: https://github.com/apache/arrow-datafusion/issues/680


   **Describe the bug**
   Catalog registered to `ExecutionContext` with an information schema are 
never freed due to a cyclic Arc chain.
   
   **To Reproduce**
   Steps to reproduce the behavior:
   
   ```rust
   #[tokio::test]
   async fn catalogs_not_leaked() {
       // the information schema used to introduce cyclic Arcs
       let ctx = ExecutionContext::with_config(
           ExecutionConfig::new().with_information_schema(true),
       );
   
       // register a single catalog
       let catalog = Arc::new(MemoryCatalogProvider::new());
       let catalog_weak = Arc::downgrade(&catalog);
       ctx.register_catalog("my_catalog", catalog);
   
       let catalog_list_weak = {
           let state = ctx.state.lock().unwrap();
           Arc::downgrade(&state.catalog_list)
       };
   
       drop(ctx);
   
       assert_eq!(Weak::strong_count(&catalog_list_weak), 0);
       assert_eq!(Weak::strong_count(&catalog_weak), 0);
   }
   ```
   
   **Expected behavior**
   Memory is freed.
   
   **Additional context**
   Affects master branch at `58da15970dc0ec9e3c1c369fe89f6ba38e09d9c9`.
   


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