Hey everyone,

I'm starting this thread to discuss clarifying in the REST Spec on what
servers should do
if as part of a commit operation they receive an update
<https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L2570C5-L2570C16>
or requirement
<https://github.com/apache/iceberg/blob/main/open-api/rest-catalog-open-api.yaml#L2601>
that
is unknown.

What I am proposing is to clearly say in the spec that if a server receives
an update or requirement which is unknown it must fail with a 400 error
code. 400 seems the most appropriate code to be able to describe unknown
input in the commit table request. Here's the PR
https://github.com/apache/iceberg/pull/10848/files

This is a simple way to ensure that implementations avoid correctness
issues that come from ignoring unknown updates/requirements. It also
enables the community to be able to add new operations without any complex
versioning schemes.

A more concrete example: Recently there's been work on removing inactive
partition specs  <https://github.com/apache/iceberg/pull/10755>from table
metadata. With this proposal, any server which receives a
RemovePartitionSpecUpdate and does not recognize it, must fail with a 400.

Note: I will propose the specific example of RemovePartitionSpecUpdate spec
change in a different thread.

Thanks,

Amogh Jahagirdar

Reply via email to