raunaqmorarka commented on PR #18188: URL: https://github.com/apache/iceberg/pull/18188#issuecomment-5760095040
1) The two ETags validate different metadata. The cache ETag belongs to the metadata captured in the cached supplier, and the ops ETag belongs to `ops.current()`. They diverge after a refresh or commit, but each stays paired with its own metadata. Writing the refreshed ETag back into the cache would be wrong, since the cached supplier still returns the load-time metadata and a 304 on `loadTable` would then hand out stale metadata. The cost of divergence is one extra full load on the next `loadTable`, which then replaces the cache entry. 2) Correct, it is not in place. The cached supplier creates a new `RESTTableOperations` on every `get()`, so `ops.refresh()` only updates that instance. The cache entry keeps the load-time metadata and ETag. 3) `refresh()` never consumed `config` or credentials from the response before this change either. Only `loadTable` feeds them into the table FileIO. A 304 has no body, so nothing changes on that path, and the cache entry with its FileIO is untouched. -- 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]
