I'm interested, but can't be there, but please record the meeting.
Thanks,
Peter

Maninderjit Singh <parmar.maninder...@gmail.com> ezt írta (időpont: 2025.
máj. 24., Szo, 2:30):

> Hi dev community,
> I was wondering if we could join a call next week for discussing the
> multi-table transactions so we can make progress. I have shared a meeting
> invite where anyone who's interested in the discussion can join. Please let
> me know if this works.
>
> Thanks,
> Maninder
>
> Sync for iceberg multi-table transactions
> Friday, May 30 · 9:00 – 10:00am
> Time zone: America/Los_Angeles
> Google Meet joining info
> Video call link: https://meet.google.com/ffc-ttjs-vti
>
>
> On Wed, May 21, 2025 at 10:25 AM Maninderjit Singh <
> parmar.maninder...@gmail.com> wrote:
>
>> Hi dev community,
>> Following up on the thread here to continue the discussion and get
>> feedback since we couldn't get to it in sync. I think we have made some
>> progress in the discussion that I want to capture while highlighting the
>> items where we need to create consensus along with pros and cons. I would
>> need help to add clarity and to make sure the arguments are captured
>> correctly.
>>
>> *Things we agree on*
>>
>>    1. Don't maintain server side state for tracking the transactions.
>>    2. Need global (catalog-wide) ordering of snapshots via some
>>    (hybrid/logical) clock/CSN
>>    3. Optionally expose the catalog's clock/CSN information without
>>    changing how tables load
>>    4. Loading consistent snapshot across multiple tables and repeatable
>>    reads based on the reference clock/CSN
>>
>>
>> *Things we disagree on*
>>
>>    1. Reuse existing timestamp field vs introduce a new field CSN
>>
>>
>> *Reusing timestamp field approach*
>>
>>    - Pros:
>>
>>
>>    1. Backwards compatibility, no change to table metadata spec so could
>>    be used by existing v2 tables.
>>    2. Fixes existing time travel and ordering issues
>>    3. Simplifies and clarifies the spec (no new id for snapshots)
>>    4. Common notion of timestamp that could be used to evaluate causal
>>    relationships in other proposals like events or commit reports.
>>
>>
>>    - Cons
>>
>>
>>    1. Unique timestamp generation in milliseconds. Potential
>>    mitigations:
>>    
>> https://docs.google.com/document/d/1KVgUJc1WgftHfLz118vMbEE7HV8_pUDk4s-GJFDyAOE/edit?pli=1&disco=AAABjwaxXeg
>>    2. Concerns about client side timestamp being overridden.
>>
>> *Adding new CSN field*
>>
>>    - Pros:
>>
>>
>>    1. Flexibility to use logical or hybrid clocks. Not sure how clients
>>    can generate a hybrid clock timestamp here without suffering from clock
>>    skew (Would be good to clarify this)?
>>    2. No client side overriding concerns.
>>
>>
>>    - Cons:
>>
>>
>>    1. Not backwards compatible, requires new field in table metadata so
>>    need to wait for v4
>>    2. Does not fix time travel and snapshot-log ordering issues
>>    3. Adds another id for snapshots that clients need to generate and
>>    reason about.
>>    4. Could not be extended to use in other proposals for causal
>>    reasoning.
>>
>>
>> Thanks,
>> Maninder
>>
>> On Tue, May 20, 2025 at 8:16 PM Maninderjit Singh <
>> parmar.maninder...@gmail.com> wrote:
>>
>>> Appreciate the feedback on the "catalog-authored timestamp" document
>>> <https://docs.google.com/document/d/1KVgUJc1WgftHfLz118vMbEE7HV8_pUDk4s-GJFDyAOE/edit?pli=1&tab=t.0>
>>> !
>>>
>>> Ryan, I don't think we can get consistent time travel queries in iceberg
>>> without fixing the timestamp field since it's what the spec
>>> <https://iceberg.apache.org/spec/#point-in-time-reads-time-travel>
>>> prescribes for time travel. Hence I took the liberty to re-use it for the
>>> catalog timestamp which ensures that snapshot-log is correctly ordered for
>>> time travel.  Additionally, the timestamp field needs to be fixed to avoid
>>> breaking commits to the table due to accidental large skews as per current
>>> spec, the scenario is described in detail here
>>> <https://docs.google.com/document/d/1KVgUJc1WgftHfLz118vMbEE7HV8_pUDk4s-GJFDyAOE/edit?pli=1&tab=t.0#bookmark=id.6avx66vzo168>
>>> .
>>> The other benefit of reusing the timestamp field is spec simplicity and
>>> clarity on timestamp generation responsibilities without requiring the need
>>> to manage yet another identifier (in addition to sequence number, snapshot
>>> id and timestamp) for snapshots.
>>>
>>> Jagdeep, your concerns about overriding the timestamp field are valid
>>> but the reason I'm not too worried about it is because client can't assume
>>> a commit is successful without their response being acknowledged by the
>>> catalog which returns the CommitTableResponse
>>> <https://github.com/apache/iceberg/blob/c2478968e65368c61799d8ca4b89506a61ca3e7c/open-api/rest-catalog-open-api.yaml#L3997>
>>>  with
>>> new metadata (that has catalog authored timestamps in the proposal). I'm
>>> happy to work with you to put something common together and get the best
>>> out of the proposals.
>>>
>>> Thanks,
>>> Maninder
>>>
>>>
>>>
>>>
>>> On Tue, May 20, 2025 at 5:48 PM Jagdeep Sidhu <sidhujagde...@gmail.com>
>>> wrote:
>>>
>>>> Thank you Ryan, Maninder and the rest of the community for feedback and
>>>> ideas!
>>>> Drew and I will take another pass and remove the catalog co-ordination
>>>> requirement for LoadTable API, and bring the proposal closer to
>>>> "catalog-authored timestamp" in the sense that clients can use CSN to find
>>>> the right snapshot, but still leave upto Catalog on what it want to use for
>>>> CSN (Hybrid clock timestamp or another monotonically increasing number).
>>>>
>>>> If more folks have feedback, please leave it in the doc or email list,
>>>> so we can address it as well in the document update.
>>>>
>>>> Maninder, one reason we proposed a new field for CommitSequenceNumber
>>>> instead of using an existing field is for backwards compatibility. Catalogs
>>>> can start optionally exposing the new field, and interested clients can use
>>>> the new field, but existing clients keep working as is. Existing and new
>>>> clients can also keep working as is against the same tables in the
>>>> same Catalog. My one worry is that having Catalog override the timestamp
>>>> field for commits may break some existing clients? Today all Iceberg
>>>> engines/clients do not expect the timestamp field in metadata/snapshot-log
>>>> to be overwritten by the Catalog.
>>>>
>>>> How do you feel about taking the best from each proposal?, i.e.
>>>> monotonically increasing commit sequence numbers (some catalogs can use
>>>> timestamps, some can use logical clock but we don't have to enforce it -
>>>> leave it up to Catalog), but keep client side logic for resolving the right
>>>> snapshot using sequence numbers instead of adding that functionality to
>>>> Catalog. Let me know!
>>>>
>>>> Thank you!
>>>> -Jagdeep
>>>>
>>>> On Tue, May 20, 2025 at 2:45 PM Ryan Blue <rdb...@gmail.com> wrote:
>>>>
>>>>> Thanks for the proposals! There are things that I think are good about
>>>>> both of them. I think that the catalog-authored timestamps proposal
>>>>> misunderstands the purpose of the timestamp field, but does get right that
>>>>> a monotonically increasing "time" field (really a sequence number) across
>>>>> tables enables the coordination needed for snapshot isolated reads. I like
>>>>> that the sequence number proposal leaves the meaning of the field to the
>>>>> catalog for coordination, but it still proposes catalog coordination by
>>>>> loading tables "at" some sequence number. Ideally, we would be able to
>>>>> (optionally) expose this extra catalog information to clients and not need
>>>>> to change how loading works.
>>>>>
>>>>> Ryan
>>>>>
>>>>> On Tue, May 20, 2025 at 9:45 AM Ryan Blue <rdb...@gmail.com> wrote:
>>>>>
>>>>>> 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