Hi everyone,

To avoid passing copies of a file around for comments, I put the doc for
commit sequence numbers into Google so we can comment on a central copy:
https://docs.google.com/document/d/1jr4Ah8oceOmo6fwxG_0II4vKDUHUKScb/edit?usp=sharing&ouid=100239850723655533404&rtpof=true&sd=true

Ryan

On Fri, May 16, 2025 at 2:51 AM Maninderjit Singh <
parmar.maninder...@gmail.com> wrote:

> Thanks for the updated proposal Drew!
> My preference for using the catalog authored timestamp is to minimize
> changes to the REST spec so we can have good backwards compatibility. I
> have quickly put together a draft proposal on how this should work. Looking
> forward to feedback and discussion.
>
>  Draft Proposal: Catalog‑Authored Timestamps for Apache Iceberg REST
> Catalog
> <https://drive.google.com/open?id=1KVgUJc1WgftHfLz118vMbEE7HV8_pUDk4s-GJFDyAOE>
>
> Thanks,
> Maninder
>
> On Wed, May 14, 2025 at 6:12 PM Drew <img...@gmail.com> wrote:
>
>> Hi everyone,
>>
>> Thank you for feedback on the MTT proposal and during community sync.
>> Based on it, Jagdeep and I have iterated on the document and added a second
>> option to use *Catalog CommitSequenceNumbers*. Looking forward to
>> getting more feedback on the proposal, where to add more details or
>> approach/changes to consider. We appreciate everyone's time on this!
>>
>> The option introduces *Catalog CommitSequenceNumbers(CSNs)*, which allow
>> clients/engines to read a consistent view of multiple tables without
>> needing to register a transaction context with the catalog. This removes
>> the need of registering a transaction context with Catalog, thus removing
>> the need of transaction bookkeeping on the catalog side. For aborting
>> transactions early, clients can use LoadTable with and without CSN to
>> figure out if there is already a conflicting write on any of the tables
>> being modified. Also removed the section where transactions were staging
>> commits on Catalog, and changed the proposal to align with Eduard's PR
>> around staging changes locally before commit (
>> https://github.com/apache/iceberg/pull/6948).
>>
>> Jagdeep also clarified in an example in a previous email where a workload
>> may require multi table snapshot isolation, even if the tables are being
>> updated without Multi-Table commit API. Though most MTT transactions will
>> commit using the multi table commit API.
>>
>> Maninder, for the approach of "common notion of time between clients and
>> catalog" - I spent some time thinking about it, but cannot find a feasible
>> way to do this. Yes, the catalogs can use a high precision clock, but
>> clients cannot use Catalog Timestamp from API calls to set local clock due
>> to network latency for request/response. For example, different requests to
>> the same Catalog servers can return different timestamps based on network
>> latency. Also what if a client works with more than 1 Catalog. If you want
>> to do a rough write-up or share a reference implementation that uses such
>> an approach, I will be happy to brainstorm it more. Let us know!
>>
>> Here is the link to updated proposal
>>
>>
>> <https://docs.google.com/document/d/1jr4Ah8oceOmo6fwxG_0II4vKDUHUKScb/edit?usp=sharing&ouid=100384647237395649950&rtpof=true&sd=true>
>> Thanks Again!
>> - Drew
>>
>

Reply via email to