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]

Reply via email to