Skip to content

[BEAM-8549] Do not use keyed operator state for checkpoint buffering - #9993

Merged
mxm merged 1 commit into
apache:release-2.17.0from
mxm:release-2.17.0-checkpointing
Nov 5, 2019
Merged

[BEAM-8549] Do not use keyed operator state for checkpoint buffering#9993
mxm merged 1 commit into
apache:release-2.17.0from
mxm:release-2.17.0-checkpointing

Conversation

@mxm

@mxmmxm commented Nov 5, 2019

Copy link
Copy Markdown
Contributor

The current buffer logic for items emitted during checkpointing is faulty in the
sense that the buffer is partitioned on the output keys of the operator. The key
may be changed or even be dropped. Thus, the original key partitioning will not
be maintained which will cause checkpointing to fail.

An alternative solution would be BEAM-6733 / #9652, but this change keeps the
current buffering logic in place. The output buffer may now always be
redistributed round-robin upon restoring from a checkpoint. Note that this is
fine because no assumption can be made about the distribution of output elements
of a DoFn operation.

Backport of #9980.

Post-Commit Tests Status (on master branch)

LangSDKApexDataflowFlinkGearpumpSamzaSpark
GoBuild Status------Build Status------Build Status
JavaBuild StatusBuild StatusBuild StatusBuild Status
Build Status
Build Status
Build StatusBuild StatusBuild Status
Build Status
PythonBuild Status
Build Status
Build Status
Build Status
---Build Status
Build Status
Build Status
Build Status
------Build Status
XLang---------Build Status---------

Pre-Commit Tests Status (on master branch)

---JavaPythonGoWebsite
Non-portableBuild StatusBuild Status
Build Status
Build StatusBuild Status
Portable---Build Status------

See .test-infra/jenkins/README for trigger phrase, status and link of all Jenkins jobs.

The current buffer logic for items emitted during checkpointing is faulty in the
sense that the buffer is partitioned on the output keys of the operator. The key
may be changed or even be dropped. Thus, the original key partitioning will not
be maintained which will cause checkpointing to fail.
An alternative solution would be BEAM-6733 / apache#9652, but this change keeps the
current buffering logic in place. The output buffer may now always be
redistributed round-robin upon restoring from a checkpoint. Note that this is
fine because no assumption can be made about the distribution of output elements
of a DoFn operation.
@mxm
mxm requested review from Ardagan and tweiseNovember 5, 2019 11:57
@mxm

mxm commented Nov 5, 2019

Copy link
Copy Markdown
ContributorAuthor

Run Python2_PVR_Flink PreCommit

@mxm

mxm commented Nov 5, 2019

Copy link
Copy Markdown
ContributorAuthor

Run Java PreCommit

@mxm
mxm merged commit ea01a98 into apache:release-2.17.0Nov 5, 2019
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@mxm@tweise