lasdf1234 opened a new issue, #12949:
URL: https://github.com/apache/gravitino/issues/12949

   ### Version
   
   main branch
   
   ### Describe what's wrong
   
   A `lakehouse-iceberg` catalog with `catalog-backend: rest` (or an Iceberg 
REST catalog whose backend is another Iceberg REST service) does not forward 
`X-Iceberg-Access-Delegation: vended-credentials` when loading a table.
   
   The near-end Iceberg REST server receives the header and logs credential 
vending as true, but the forwarded load against the remote catalog has `access 
delegation: null` and `credential vending: false`. Direct loads against the 
remote catalog return `storage-credentials` (for example 
STS/`s3.session-token`). Loads through the federated catalog return only 
`metadata-location` / `metadata` / `config`. Engines can list namespaces and 
load table metadata, then fail on the first data read.
   
   ### Error message and/or stacktrace
   
   Near-end load:
   
   ```text
   Load Iceberg table, catalog: iceberg_fwd, ... access delegation: 
vended-credentials, credential vending: true
   ```
   
   Forwarded remote load:
   
   ```text
   Load Iceberg table, catalog: iceberg_s3, ... access delegation: null, 
credential vending: false
   ```
   
   The forwarded `loadTable` JSON has no `storage-credentials`.
   
   ### How to reproduce
   
   1. Create a remote Iceberg REST catalog that vends credentials when 
`X-Iceberg-Access-Delegation: vended-credentials` is present.
   2. Create a Gravitino Iceberg catalog that points at that REST endpoint:
   
   ```json
   {
     "catalog-backend": "rest",
     "uri": "http://<remote>:9001/iceberg/",
     "warehouse": "iceberg_s3"
   }
   ```
   
   3. Load a table through the federated catalog with:
   
   ```http
   X-Iceberg-Access-Delegation: vended-credentials
   ```
   
   4. Compare with the same load sent directly to the remote catalog. The 
federated path omits vended credentials.
   
   ### Additional context
   
   `FederatedCatalogWrapper.loadTable` ignored `requestCredential` and 
delegated to Iceberg's `RESTCatalog.loadTable`, which does not send the 
access-delegation header. Scan-plan federation already forwards the header; 
load table should do the same and rewrite remote credential refresh endpoints 
to this IRC catalog.
   
   Observed on 1.3.0-rc2 as well as current main.


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