NoahKusaba opened a new issue, #3285:
URL: https://github.com/apache/iceberg-rust/issues/3285
### Is your feature request related to a problem or challenge?
`CatalogBuilder::with_runtime` lets a caller choose the runtime a catalog,
and the tables it creates, spawn their work on (scan planning, delete file
processing). A catalog built through `iceberg-catalog-loader` cannot be given
one: `BoxedCatalogBuilder` forwards `with_storage_factory` and
`with_kms_client_factory` to the underlying `CatalogBuilder`, but has no
`with_runtime`.
So a catalog chosen by type at runtime
(`iceberg_catalog_loader::load("rest")`) always uses the runtime current when
it is built, since the builders fall back to `Runtime::current()`. An
application that keeps Iceberg work on a dedicated runtime, for example so that
catalog clients and cached tables outlive the runtime of the request that built
them, has to either build every catalog inside that runtime or give up the
loader and match on catalog types itself.
### Describe the solution you'd like
Add `with_runtime` to `BoxedCatalogBuilder`, forwarding to
`CatalogBuilder::with_runtime` the same way the other two methods are forwarded:
```rust
let catalog = iceberg_catalog_loader::load("rest")?
.with_runtime(runtime)
.load("rest".to_string(), props)
.await?;
```
This mirrors how `with_kms_client_factory` was added to the loader in #2650.
Every builder in the loader's registry already implements
`CatalogBuilder::with_runtime`, so nothing else changes.
### Willingness to contribute
I can contribute to this feature independently
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]