rkhachatryan opened a new pull request #13091:
URL: https://github.com/apache/flink/pull/13091
## What is the purpose of the change
`CheckpointRequestDecider` uses lastCheckpointCompletionTime and
pendingRequests.size to make a decision.
While latter is currently checked under a lock, the former is not.
So it can see "no pending checkpoints" (fresh value of
`pendingRequests.size`) and "last checkpoint completed long time ago" (stale
value of `lastCheckpointCompletionTime`).
Therefore, it decides to execute request, effictevely ignoring
minPauseBetweenCheckpoint setting.
This increases checkpoint frequency, and in some cases decreases throughput
(see ML thread).
This PR replaces function argument for `lastCheckpointCompletionTime` with a
supplier, which is called under lock (similar to `pendingRequests.size()`).
## Verifying this change
Added unit test: `CheckpointCoordinatorTest.testMinCheckpointPause`.
## Does this pull request potentially affect one of the following parts:
- Dependencies (does it add or upgrade a dependency): no
- The public API, i.e., is any changed class annotated with
`@Public(Evolving)`: no
- The serializers: no
- The runtime per-record code paths (performance sensitive): no
- Anything that affects deployment or recovery: JobManager (and its
components), Checkpointing, Kubernetes/Yarn/Mesos, ZooKeeper: yes, Checkpointing
- The S3 file system connector: no
## Documentation
- Does this pull request introduce a new feature? no
- If yes, how is the feature documented? not applicable
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]