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.
Describe the bug
Catalog registered to
ExecutionContextwith an information schema are never freed due to a cyclic Arc chain.To Reproduce
Steps to reproduce the behavior:
Expected behavior
Memory is freed.
Additional context
Affects master branch at
58da15970dc0ec9e3c1c369fe89f6ba38e09d9c9.