-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
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:
#[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.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working