[
https://issues.apache.org/jira/browse/FLINK-17860?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roman Khachatryan updated FLINK-17860:
--------------------------------------
Description:
With a high degree of parallelism, we end up with n*n files in each checkpoint
(not mitigated by state.backend.fs.memory-threshold: 1048576 and
state.backend.fs.write-buffer-size: 4194304 because each state is ten-hundreds
Mb).
Writing them if fast (from many subtasks), removing them is slow (from JM).
Instead of going through them 1 by 1, we could remove the directory recursively.
The easiest way is to remove channelStateHandle.discard() calls and use
isRecursive=true in
FsCompletedCheckpointStorageLocation.disposeStorageLocation.
Note: with the current isRecursive=false there will be an exception if there
are any files left under that folder.
This can be extended to other state handles in future as well.
was:
With a high degree of parallelism, we end up with n*n files in each checkpoint
(not mitigated by state.backend.fs.memory-threshold: 1048576 and
state.backend.fs.write-buffer-size: 4194304 because each state is ten-hundreds
Mb).
Writing them if fast (from many subtasks), removing them is slow (from JM).
Instead of going through them 1 by 1, we could remove the directory recursively.
The easiest way is to just not call discard for channelStateHandles and then
switch flag isRecursive=true (if unalignedCheckpoints == true?).
This can be extended to other state handles in future as well.
> Recursively remove channel state directories
> --------------------------------------------
>
> Key: FLINK-17860
> URL: https://issues.apache.org/jira/browse/FLINK-17860
> Project: Flink
> Issue Type: Improvement
> Components: Runtime / Checkpointing
> Affects Versions: 1.11.0
> Reporter: Roman Khachatryan
> Assignee: Roman Khachatryan
> Priority: Critical
> Fix For: 1.11.0
>
>
> With a high degree of parallelism, we end up with n*n files in each
> checkpoint (not mitigated by state.backend.fs.memory-threshold: 1048576 and
> state.backend.fs.write-buffer-size: 4194304 because each state is
> ten-hundreds Mb).
> Writing them if fast (from many subtasks), removing them is slow (from JM).
>
> Instead of going through them 1 by 1, we could remove the directory
> recursively.
>
> The easiest way is to remove channelStateHandle.discard() calls and use
> isRecursive=true in
> FsCompletedCheckpointStorageLocation.disposeStorageLocation.
> Note: with the current isRecursive=false there will be an exception if there
> are any files left under that folder.
>
> This can be extended to other state handles in future as well.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)