The GitHub Actions job "Required Checks" on 
texera.git/gh-readonly-queue/main/pr-6944-148b40c03628114a9f6cb17a117e9feeec9a878a
 has succeeded.
Run started by GitHub user mengw15 (triggered by mengw15).

Head commit for run:
15d82c7b9d2af862741f71653247c46f060473a7 / Meng Wang <[email protected]>
feat(storage): per-warehouse Iceberg catalog and warehouse-scoped URIs (#6944)

### What changes were proposed in this PR?

First slice of the per-user bring-your-own-S3 warehouse feature
(umbrella #6870). This is a
**foundation-only, backward-compatible** change that makes the storage
layer warehouse-aware
without changing any behavior yet:

- Replace the single shared Iceberg catalog with a **per-warehouse
cache** on both the JVM
(`IcebergCatalogInstance`) and Python (`iceberg_catalog_instance.py`)
sides, so one worker
process can hold several REST catalogs — one per warehouse it touches.
Only the REST
(Lakekeeper) catalog varies by warehouse; the hadoop/postgres catalogs
stay warehouse-agnostic.
- Encode the warehouse as a leading `/wh/<name>` segment in VFS URIs
(`VFSURIFactory`), so a URI
fully identifies where its tables live; the read path
(`DocumentFactory`) derives the warehouse
  back out of the URI.
- Add an optional `warehouse` field to `WorkflowContext` to carry the
selection through an execution.

With no warehouse in play (the default), URIs and catalog behavior are
byte-for-byte identical to
today, so nothing changes for existing deployments.

### Any related issues, documentation, discussions?

Closes #6929. Part of #6870 (design discussions #5293 and #6040).

### How was this PR tested?

Adds unit tests for the new warehouse-aware behavior:
- `VFSURIFactorySpec` — `warehouseFromURI` extraction, the `/wh/<name>`
segment (present with a
warehouse, absent without), and that a warehouse-scoped URI still
round-trips through `decodeURI`.
- `DocumentFactorySpec` — creating and finding a document for a
warehouse-scoped URI against a local
  Iceberg catalog (the `/wh/` prefix is stripped from the storage key).
- `test_vfs_uri_factory.py` — matching coverage for the Python
`warehouse_from_uri`.

The existing storage/Iceberg tests continue to cover the default
(no-warehouse) path unchanged.
The full build and test suite run in CI.

### Was this PR authored or co-authored using generative AI tooling?

Generated-by: Claude Opus 4.8

---------

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

Report URL: https://github.com/apache/texera/actions/runs/31122083216

With regards,
GitHub Actions via GitBox

Reply via email to