[Improvement] Support ETag / If-None-Match conditional loading on loadView endpoint
- Dominant language
- Java
- Stars
- 3.2k
- Forks
- 935
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 339
Description
### What would you like to be improved?
`loadTable` implements ETag-based conditional loading (`If-None-Match`, `generateETag`, `buildResponseWithETag`, returning `304 Not Modified`), but `loadView` returns the full response unconditionally with no ETag support. This is an inconsistency in spec coverage and misses a caching/bandwidth optimization that the Iceberg REST spec allows for views.
### How should we improve?
Add ETag generation and `If-None-Match` handling to `loadView`, reusing the existing helpers used by `loadTable` where possible. Return `304 Not Modified` when the client's ETag matches, and include the `ETag` header on `200` responses. Add tests for match/no-match/absent-header cases.
Related: spec-compliance epic #10547.
Contributor guide
Research direction
Start by comparing the loadView endpoint with loadTable, focusing on the existing If-None-Match, generateETag, and buildResponseWithETag helpers. Add coverage for matching, non-matching, and absent If-None-Match headers; done means matching requests return 304 and successful responses include ETag headers.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, backend
- Issue type
- Feature
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 75/100