You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by shuai xu <xu...@gmail.com> on 2025/04/08 01:57:46 UTC

[DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Hi devs,

I'd like to start a discussion on FLIP-519: Introduce async lookup key
ordered mode[1].

The Flink system currently supports both record-level ordered and
unordered output modes for asynchronous lookup joins. However, it does
not guarantee the processing order of records sharing the same key.

As highlighted in [2], there are two key requirements for enhancing
async io operations:
1. Ensuring the processing order of records with the same key is a
common requirement in DataStream.
2. Sequential processing of records sharing the same upsertKey when
performing lookup join in Flink SQL is essential for maintaining
correctness.

This optimization aims to balance correctness and performance for
stateful streaming workloads.Then the FLIP introduce a new operator
KeyedAsyncWaitOperator to supports the optimization. Besides, a new
option is added to control the behaviour avoid influencing existing
jobs.

please find more details in the FLIP wiki document[1]. Looking forward
to your feedback.

[1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
[2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n

Best,
Xu Shuai

Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by shuai xu <xu...@gmail.com>.
Hi, devs, 


There haven’t been any further responses to this email over the past few days. 
I'd like to initiate a vote on the current proposal[1] in the next few days. If 
there are any concerns about this FLIP-519[1], I will gladly pause and make 
necessary adjustments. 

Best, 
Xu Shuai

[1]https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode

> 2025年4月8日 09:57,shuai xu <xu...@gmail.com> 写道:
> 
> Hi devs,
> 
> I'd like to start a discussion on FLIP-519: Introduce async lookup key
> ordered mode[1].
> 
> The Flink system currently supports both record-level ordered and
> unordered output modes for asynchronous lookup joins. However, it does
> not guarantee the processing order of records sharing the same key.
> 
> As highlighted in [2], there are two key requirements for enhancing
> async io operations:
> 1. Ensuring the processing order of records with the same key is a
> common requirement in DataStream.
> 2. Sequential processing of records sharing the same upsertKey when
> performing lookup join in Flink SQL is essential for maintaining
> correctness.
> 
> This optimization aims to balance correctness and performance for
> stateful streaming workloads.Then the FLIP introduce a new operator
> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
> option is added to control the behaviour avoid influencing existing
> jobs.
> 
> please find more details in the FLIP wiki document[1]. Looking forward
> to your feedback.
> 
> [1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
> 
> Best,
> Xu Shuai


Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by shuai xu <xu...@gmail.com>.
Hi Ron,

Thank you so much for your feedback and support on this proposal! I really appreciate you taking the time to review

 it in detail.

You're absolutely right about the table's content. When table.exec.async-lookup.key-ordered-enabled=true and 

table.exec.async-lookup.output-mode=ORDERED, the lookup join in key order should indeed be marked as "yes” 

instead of "no". The current representation is a bit misleading and could cause confusion.


I'll update the FLIP to correct this point and ensure it accurately reflects the behavior.

Best,
Shuai

> 2025年4月25日 10:23,Ron Liu <ro...@gmail.com> 写道:
> 
> Hi, Shuai
> 
> Thanks for driving this proposal. The FLIP looks good to me overall, +1 for
> it.
> 
> I have a small question about the table's contents. When
> 'table.exec.async-lookup.key-ordered-enabled=true' and
> 'table.exec.async-lookup.output-mode=ORDERD', the lookup join in key
> ordered should be 'yes', not 'no'.
> ORDERD is naturally guaranteed to be ordered, it just doesn't depend on the
> current implementation of this proposal, which is a bit confusing here.
> 
> 
> Best,
> Ron
> 
> shuai xu <xu...@gmail.com> 于2025年4月18日周五 10:50写道:
> 
>> Hi Xuyang,
>> 
>> 
>> Thanks for your response. Actually, ALLOW_UNORDERED is only enabled when
>> facing
>> 
>> append-only streams for higher throughput. KEY_ORDERED is designed for
>> scenarios
>> 
>> where upsert key exists. Its goal is to achieve higher performance
>> compared to the ORDERED
>> 
>> mode while ensuring correctness is not compromised. In a word,
>> ALLOW_UNORDERED
>> 
>> mode does works in the presence of an upsert key.
>> 
>> 
>> Aside from the literal difference in sequence, KEY_ORDER focuses on the
>> processing order,
>> 
>> while ALLOW_UNORDERED pertains to the output order. In ALLOW_UNORDERED
>> mode,
>> 
>> the processing order may be either ordered or unordered.
>> 
>> 
>> Best,
>> Xu Shuai
>> 
>>> 2025年4月17日 14:53,Xuyang <xy...@163.com> 写道:
>>> 
>>> Hi, Shuai.
>>> 
>>> This is a valuable addition to the current AsyncLookupJoin, and I’m
>>> 
>>> generally in favor of it.
>>> 
>>> 
>>> 
>>> 
>>> I have one question. Why do we need to introduce additional parameters
>>> 
>>> to control KEY_ORDERED and ALLOW_UNORDERED? In other words,
>>> 
>>> what scenarios require allowing users to perform completely unordered
>>> 
>>> async lookup joins in the presence of an upsert key?
>>> 
>>> 
>>> 
>>> 
>>> --
>>> 
>>>   Best!
>>>   Xuyang
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 在 2025-04-11 10:39:46,"shuai xu" <xu...@gmail.com> 写道:
>>>> Hi all,
>>>> 
>>>> This FLIP will primarily focus on the implementation within the table
>> module. As for support in the DataStream API, it will be addressed in a
>> separate FLIP.
>>>> 
>>>>> 2025年4月8日 09:57,shuai xu <xu...@gmail.com> 写道:
>>>>> 
>>>>> Hi devs,
>>>>> 
>>>>> I'd like to start a discussion on FLIP-519: Introduce async lookup key
>>>>> ordered mode[1].
>>>>> 
>>>>> The Flink system currently supports both record-level ordered and
>>>>> unordered output modes for asynchronous lookup joins. However, it does
>>>>> not guarantee the processing order of records sharing the same key.
>>>>> 
>>>>> As highlighted in [2], there are two key requirements for enhancing
>>>>> async io operations:
>>>>> 1. Ensuring the processing order of records with the same key is a
>>>>> common requirement in DataStream.
>>>>> 2. Sequential processing of records sharing the same upsertKey when
>>>>> performing lookup join in Flink SQL is essential for maintaining
>>>>> correctness.
>>>>> 
>>>>> This optimization aims to balance correctness and performance for
>>>>> stateful streaming workloads.Then the FLIP introduce a new operator
>>>>> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
>>>>> option is added to control the behaviour avoid influencing existing
>>>>> jobs.
>>>>> 
>>>>> please find more details in the FLIP wiki document[1]. Looking forward
>>>>> to your feedback.
>>>>> 
>>>>> [1]
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
>>>>> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
>>>>> 
>>>>> Best,
>>>>> Xu Shuai
>> 
>> 


Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by Ron Liu <ro...@gmail.com>.
Hi, Shuai

Thanks for driving this proposal. The FLIP looks good to me overall, +1 for
it.

I have a small question about the table's contents. When
'table.exec.async-lookup.key-ordered-enabled=true' and
'table.exec.async-lookup.output-mode=ORDERD', the lookup join in key
ordered should be 'yes', not 'no'.
ORDERD is naturally guaranteed to be ordered, it just doesn't depend on the
current implementation of this proposal, which is a bit confusing here.


Best,
Ron

shuai xu <xu...@gmail.com> 于2025年4月18日周五 10:50写道:

> Hi Xuyang,
>
>
> Thanks for your response. Actually, ALLOW_UNORDERED is only enabled when
> facing
>
> append-only streams for higher throughput. KEY_ORDERED is designed for
> scenarios
>
> where upsert key exists. Its goal is to achieve higher performance
> compared to the ORDERED
>
> mode while ensuring correctness is not compromised. In a word,
> ALLOW_UNORDERED
>
> mode does works in the presence of an upsert key.
>
>
> Aside from the literal difference in sequence, KEY_ORDER focuses on the
> processing order,
>
> while ALLOW_UNORDERED pertains to the output order. In ALLOW_UNORDERED
> mode,
>
> the processing order may be either ordered or unordered.
>
>
> Best,
> Xu Shuai
>
> > 2025年4月17日 14:53,Xuyang <xy...@163.com> 写道:
> >
> > Hi, Shuai.
> >
> > This is a valuable addition to the current AsyncLookupJoin, and I’m
> >
> > generally in favor of it.
> >
> >
> >
> >
> > I have one question. Why do we need to introduce additional parameters
> >
> > to control KEY_ORDERED and ALLOW_UNORDERED? In other words,
> >
> > what scenarios require allowing users to perform completely unordered
> >
> > async lookup joins in the presence of an upsert key?
> >
> >
> >
> >
> > --
> >
> >    Best!
> >    Xuyang
> >
> >
> >
> >
> >
> > 在 2025-04-11 10:39:46,"shuai xu" <xu...@gmail.com> 写道:
> >> Hi all,
> >>
> >> This FLIP will primarily focus on the implementation within the table
> module. As for support in the DataStream API, it will be addressed in a
> separate FLIP.
> >>
> >>> 2025年4月8日 09:57,shuai xu <xu...@gmail.com> 写道:
> >>>
> >>> Hi devs,
> >>>
> >>> I'd like to start a discussion on FLIP-519: Introduce async lookup key
> >>> ordered mode[1].
> >>>
> >>> The Flink system currently supports both record-level ordered and
> >>> unordered output modes for asynchronous lookup joins. However, it does
> >>> not guarantee the processing order of records sharing the same key.
> >>>
> >>> As highlighted in [2], there are two key requirements for enhancing
> >>> async io operations:
> >>> 1. Ensuring the processing order of records with the same key is a
> >>> common requirement in DataStream.
> >>> 2. Sequential processing of records sharing the same upsertKey when
> >>> performing lookup join in Flink SQL is essential for maintaining
> >>> correctness.
> >>>
> >>> This optimization aims to balance correctness and performance for
> >>> stateful streaming workloads.Then the FLIP introduce a new operator
> >>> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
> >>> option is added to control the behaviour avoid influencing existing
> >>> jobs.
> >>>
> >>> please find more details in the FLIP wiki document[1]. Looking forward
> >>> to your feedback.
> >>>
> >>> [1]
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
> >>> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
> >>>
> >>> Best,
> >>> Xu Shuai
>
>

Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by shuai xu <xu...@gmail.com>.
Hi Xuyang,


Thanks for your response. Actually, ALLOW_UNORDERED is only enabled when facing 

append-only streams for higher throughput. KEY_ORDERED is designed for scenarios 

where upsert key exists. Its goal is to achieve higher performance compared to the ORDERED

mode while ensuring correctness is not compromised. In a word, ALLOW_UNORDERED 

mode does works in the presence of an upsert key.


Aside from the literal difference in sequence, KEY_ORDER focuses on the processing order,
 
while ALLOW_UNORDERED pertains to the output order. In ALLOW_UNORDERED mode, 

the processing order may be either ordered or unordered.


Best,
Xu Shuai

> 2025年4月17日 14:53,Xuyang <xy...@163.com> 写道:
> 
> Hi, Shuai.
> 
> This is a valuable addition to the current AsyncLookupJoin, and I’m 
> 
> generally in favor of it. 
> 
> 
> 
> 
> I have one question. Why do we need to introduce additional parameters 
> 
> to control KEY_ORDERED and ALLOW_UNORDERED? In other words, 
> 
> what scenarios require allowing users to perform completely unordered 
> 
> async lookup joins in the presence of an upsert key?
> 
> 
> 
> 
> --
> 
>    Best!
>    Xuyang
> 
> 
> 
> 
> 
> 在 2025-04-11 10:39:46,"shuai xu" <xu...@gmail.com> 写道:
>> Hi all,
>> 
>> This FLIP will primarily focus on the implementation within the table module. As for support in the DataStream API, it will be addressed in a separate FLIP.
>> 
>>> 2025年4月8日 09:57,shuai xu <xu...@gmail.com> 写道:
>>> 
>>> Hi devs,
>>> 
>>> I'd like to start a discussion on FLIP-519: Introduce async lookup key
>>> ordered mode[1].
>>> 
>>> The Flink system currently supports both record-level ordered and
>>> unordered output modes for asynchronous lookup joins. However, it does
>>> not guarantee the processing order of records sharing the same key.
>>> 
>>> As highlighted in [2], there are two key requirements for enhancing
>>> async io operations:
>>> 1. Ensuring the processing order of records with the same key is a
>>> common requirement in DataStream.
>>> 2. Sequential processing of records sharing the same upsertKey when
>>> performing lookup join in Flink SQL is essential for maintaining
>>> correctness.
>>> 
>>> This optimization aims to balance correctness and performance for
>>> stateful streaming workloads.Then the FLIP introduce a new operator
>>> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
>>> option is added to control the behaviour avoid influencing existing
>>> jobs.
>>> 
>>> please find more details in the FLIP wiki document[1]. Looking forward
>>> to your feedback.
>>> 
>>> [1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
>>> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
>>> 
>>> Best,
>>> Xu Shuai


Re:Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by Xuyang <xy...@163.com>.
Hi, Shuai.

This is a valuable addition to the current AsyncLookupJoin, and I’m 

generally in favor of it. 




I have one question. Why do we need to introduce additional parameters 

to control KEY_ORDERED and ALLOW_UNORDERED? In other words, 

what scenarios require allowing users to perform completely unordered 

async lookup joins in the presence of an upsert key?




--

    Best!
    Xuyang





在 2025-04-11 10:39:46,"shuai xu" <xu...@gmail.com> 写道:
>Hi all,
>
>This FLIP will primarily focus on the implementation within the table module. As for support in the DataStream API, it will be addressed in a separate FLIP.
>
>> 2025年4月8日 09:57,shuai xu <xu...@gmail.com> 写道:
>> 
>> Hi devs,
>> 
>> I'd like to start a discussion on FLIP-519: Introduce async lookup key
>> ordered mode[1].
>> 
>> The Flink system currently supports both record-level ordered and
>> unordered output modes for asynchronous lookup joins. However, it does
>> not guarantee the processing order of records sharing the same key.
>> 
>> As highlighted in [2], there are two key requirements for enhancing
>> async io operations:
>> 1. Ensuring the processing order of records with the same key is a
>> common requirement in DataStream.
>> 2. Sequential processing of records sharing the same upsertKey when
>> performing lookup join in Flink SQL is essential for maintaining
>> correctness.
>> 
>> This optimization aims to balance correctness and performance for
>> stateful streaming workloads.Then the FLIP introduce a new operator
>> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
>> option is added to control the behaviour avoid influencing existing
>> jobs.
>> 
>> please find more details in the FLIP wiki document[1]. Looking forward
>> to your feedback.
>> 
>> [1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
>> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
>> 
>> Best,
>> Xu Shuai

Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by shuai xu <xu...@gmail.com>.
Hi all,

This FLIP will primarily focus on the implementation within the table module. As for support in the DataStream API, it will be addressed in a separate FLIP.

> 2025年4月8日 09:57,shuai xu <xu...@gmail.com> 写道:
> 
> Hi devs,
> 
> I'd like to start a discussion on FLIP-519: Introduce async lookup key
> ordered mode[1].
> 
> The Flink system currently supports both record-level ordered and
> unordered output modes for asynchronous lookup joins. However, it does
> not guarantee the processing order of records sharing the same key.
> 
> As highlighted in [2], there are two key requirements for enhancing
> async io operations:
> 1. Ensuring the processing order of records with the same key is a
> common requirement in DataStream.
> 2. Sequential processing of records sharing the same upsertKey when
> performing lookup join in Flink SQL is essential for maintaining
> correctness.
> 
> This optimization aims to balance correctness and performance for
> stateful streaming workloads.Then the FLIP introduce a new operator
> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
> option is added to control the behaviour avoid influencing existing
> jobs.
> 
> please find more details in the FLIP wiki document[1]. Looking forward
> to your feedback.
> 
> [1] https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
> 
> Best,
> Xu Shuai


Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by shuai xu <xu...@gmail.com>.
Hi Zakelly,

Thank you for your response and for taking responsibility for generalizing the functionality of the 'Asynchronous Execution Model' (AEC). As we discussed earlier, the subsequent work on FLIP will be based on operators that support AEC. If you need any further discussion, please feel free to reach out to me directly.

> 2025年4月10日 12:31,Zakelly Lan <za...@gmail.com> 写道:
> 
> Hi all,
> 
> I have also added a 'Follow up' section at the end of the FLIP-425[1]
> describing this.
> 
> [1] https://cwiki.apache.org/confluence/x/S4p3EQ
> 
> 
> Best,
> Zakelly
> 
> On Wed, Apr 9, 2025 at 12:42 PM Zakelly Lan <za...@gmail.com> wrote:
> 
>> Thanks for driving this!
>> 
>> +1 for the FLIP given there is a solid user case behind.
>> 
>> Shuai and I had a discussion and we agree that `KeyedAsyncWaitOperator`
>> in current FLIP shares similar functionality with the `Asynchronous
>> Execution Model (AEC)` introduced in FLIP-425[1]. We think it is better to
>> generalize the AEC for all keyed ordered cases, not only for state access.
>> So I'd make this happen after the approval of this FLIP. Hope this helps
>> all the similar operators to implement.
>> 
>> [1] https://cwiki.apache.org/confluence/x/S4p3EQ
>> 
>> 
>> Best,
>> Zakelly
>> 
>> On Tue, Apr 8, 2025 at 10:00 AM shuai xu <xu...@gmail.com> wrote:
>> 
>>> Hi devs,
>>> 
>>> I'd like to start a discussion on FLIP-519: Introduce async lookup key
>>> ordered mode[1].
>>> 
>>> The Flink system currently supports both record-level ordered and
>>> unordered output modes for asynchronous lookup joins. However, it does
>>> not guarantee the processing order of records sharing the same key.
>>> 
>>> As highlighted in [2], there are two key requirements for enhancing
>>> async io operations:
>>> 1. Ensuring the processing order of records with the same key is a
>>> common requirement in DataStream.
>>> 2. Sequential processing of records sharing the same upsertKey when
>>> performing lookup join in Flink SQL is essential for maintaining
>>> correctness.
>>> 
>>> This optimization aims to balance correctness and performance for
>>> stateful streaming workloads.Then the FLIP introduce a new operator
>>> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
>>> option is added to control the behaviour avoid influencing existing
>>> jobs.
>>> 
>>> please find more details in the FLIP wiki document[1]. Looking forward
>>> to your feedback.
>>> 
>>> [1]
>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
>>> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
>>> 
>>> Best,
>>> Xu Shuai
>>> 
>> 


Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by Zakelly Lan <za...@gmail.com>.
Hi all,

I have also added a 'Follow up' section at the end of the FLIP-425[1]
describing this.

[1] https://cwiki.apache.org/confluence/x/S4p3EQ


Best,
Zakelly

On Wed, Apr 9, 2025 at 12:42 PM Zakelly Lan <za...@gmail.com> wrote:

> Thanks for driving this!
>
> +1 for the FLIP given there is a solid user case behind.
>
> Shuai and I had a discussion and we agree that `KeyedAsyncWaitOperator`
> in current FLIP shares similar functionality with the `Asynchronous
> Execution Model (AEC)` introduced in FLIP-425[1]. We think it is better to
> generalize the AEC for all keyed ordered cases, not only for state access.
> So I'd make this happen after the approval of this FLIP. Hope this helps
> all the similar operators to implement.
>
> [1] https://cwiki.apache.org/confluence/x/S4p3EQ
>
>
> Best,
> Zakelly
>
> On Tue, Apr 8, 2025 at 10:00 AM shuai xu <xu...@gmail.com> wrote:
>
>> Hi devs,
>>
>> I'd like to start a discussion on FLIP-519: Introduce async lookup key
>> ordered mode[1].
>>
>> The Flink system currently supports both record-level ordered and
>> unordered output modes for asynchronous lookup joins. However, it does
>> not guarantee the processing order of records sharing the same key.
>>
>> As highlighted in [2], there are two key requirements for enhancing
>> async io operations:
>> 1. Ensuring the processing order of records with the same key is a
>> common requirement in DataStream.
>> 2. Sequential processing of records sharing the same upsertKey when
>> performing lookup join in Flink SQL is essential for maintaining
>> correctness.
>>
>> This optimization aims to balance correctness and performance for
>> stateful streaming workloads.Then the FLIP introduce a new operator
>> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
>> option is added to control the behaviour avoid influencing existing
>> jobs.
>>
>> please find more details in the FLIP wiki document[1]. Looking forward
>> to your feedback.
>>
>> [1]
>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
>> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
>>
>> Best,
>> Xu Shuai
>>
>

Re: [DISCUSS] FLIP-519: Introduce async lookup key ordered mode

Posted by Zakelly Lan <za...@gmail.com>.
Thanks for driving this!

+1 for the FLIP given there is a solid user case behind.

Shuai and I had a discussion and we agree that `KeyedAsyncWaitOperator` in
current FLIP shares similar functionality with the `Asynchronous Execution
Model (AEC)` introduced in FLIP-425[1]. We think it is better to generalize
the AEC for all keyed ordered cases, not only for state access. So I'd make
this happen after the approval of this FLIP. Hope this helps all the
similar operators to implement.

[1] https://cwiki.apache.org/confluence/x/S4p3EQ


Best,
Zakelly

On Tue, Apr 8, 2025 at 10:00 AM shuai xu <xu...@gmail.com> wrote:

> Hi devs,
>
> I'd like to start a discussion on FLIP-519: Introduce async lookup key
> ordered mode[1].
>
> The Flink system currently supports both record-level ordered and
> unordered output modes for asynchronous lookup joins. However, it does
> not guarantee the processing order of records sharing the same key.
>
> As highlighted in [2], there are two key requirements for enhancing
> async io operations:
> 1. Ensuring the processing order of records with the same key is a
> common requirement in DataStream.
> 2. Sequential processing of records sharing the same upsertKey when
> performing lookup join in Flink SQL is essential for maintaining
> correctness.
>
> This optimization aims to balance correctness and performance for
> stateful streaming workloads.Then the FLIP introduce a new operator
> KeyedAsyncWaitOperator to supports the optimization. Besides, a new
> option is added to control the behaviour avoid influencing existing
> jobs.
>
> please find more details in the FLIP wiki document[1]. Looking forward
> to your feedback.
>
> [1]
> https://cwiki.apache.org/confluence/display/FLINK/FLIP-519%3A++Introduce+async+lookup+key+ordered+mode
> [2] https://lists.apache.org/thread/wczzjhw8g0jcbs8lw2jhtrkw858cmx5n
>
> Best,
> Xu Shuai
>