apache / apache/gravitino

[Improvement] Support ETag / If-None-Match conditional loading on loadView endpoint

Open
#11,582 0 comments 0 reactions 0 assignees View on GitHub
improvement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.