I started a proposal document focused on standardizing requirement errors. I 
believe this will solve most of the problems, and then we can evolve to handle 
other cases.

https://docs.google.com/document/d/136ed1dhktQvWGc1u_-3CPR5-beqRqvEgTqJ5MoBFP8Q/edit?usp=sharing

André Anastácio

On Wednesday, August 13th, 2025 at 11:33 AM, Steve Loughran 
<ste...@cloudera.com.INVALID> wrote:

> not error messages ` too brittle, maintenance mess.
>
> some hex error code for each failure which your tests can assert on and which 
> can be documented in a table is a much better design. Windows does this 
> -based on the design of DEC's VMS OS
> https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/18d8fbe8-a967-4f1c-ae50-99ca8e491d2d
>
> On Mon, 11 Aug 2025 at 18:29, Daniel Weeks <dwe...@apache.org> wrote:
>
>> Hey André,
>>
>> The RCK suite uses the catalog tests from reference implementation to ensure 
>> consistency across implementations. Your point is valid that as the other 
>> languages started to build client/server implementations that didn't have 
>> the exact same messaging.
>>
>> I think we want to push toward some amount of standardization in the error 
>> messages. Ideally we'd steer away from anything language specific, but we 
>> want the messaging to be clear and consistent for things like what caused a 
>> requirement to fail.
>>
>> I think that the solution might be a combination of what you've identified. 
>> Possibly relaxing or clarifying some of the messaging but also leaving room 
>> so that requirements aren't overly strict. Also, I think we're open to just 
>> better/more consistent messaging because we didn't focus too much on it when 
>> building the java tests. Having the other language clients use the RCK would 
>> also help drive consistency.
>>
>> If there are specific examples, we might want to start with a couple 
>> failures and see what makes sense as a solution.
>>
>> -Dan
>>
>> On Tue, Aug 5, 2025 at 8:14 AM André Luis Anastácio 
>> <ndrl...@proton.me.invalid> wrote:
>>
>>> Hello everyone,
>>>
>>> When I was running the RCK against Lakekeeper, I noticed that RCK verifies 
>>> not only the exception type but also the error message. RCK verifies the 
>>> messages as they are written in the Java implementation, and since 
>>> Lakekeeper uses iceberg-rust, we have different error messages [1] Java [2] 
>>> Rust. However, the error messages are written differently in other clients 
>>> as well [3] Python [4] Go.
>>>
>>> This could become a broader compatibility issue as we see more REST 
>>> implementations built on different language foundations.
>>>
>>> Should we standardize the error messages across all implementations, make 
>>> RCK more permissive by focusing only on exception types, or handle this at 
>>> the REST server implementation level where each implementation adapts to 
>>> match RCK expectations?
>>>
>>> Are there other solutions I haven't considered?
>>>
>>> - 
>>> https://github.com/apache/iceberg/blob/fa80ba787af776f516e772f27bf746756de93b70/core/src/main/java/org/apache/iceberg/UpdateRequirement.java#L186
>>> - 
>>> https://github.com/apache/iceberg-rust/blob/e7160df4a0cb8f2f6ce12681053e8cb1a43b74e1/crates/iceberg/src/catalog/mod.rs#L711
>>> - 
>>> https://github.com/apache/iceberg-python/blob/main/pyiceberg/table/update/__init__.py#L801
>>> - 
>>> https://github.com/apache/iceberg-go/blob/b4babc8b919258be7b25f5cc295fc68a458f9559/table/requirements.go#L268
>>>
>>> André Anastácio

Reply via email to