You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Roman Khachatryan (Jira)" <ji...@apache.org> on 2020/05/21 08:28:00 UTC

[jira] [Updated] (FLINK-17860) Recursively remove channel state directories

     [ 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)