Yun Tang created FLINK-25429:
--------------------------------

             Summary: Avoid to close output streams twice during uploading 
changelogs
                 Key: FLINK-25429
                 URL: https://issues.apache.org/jira/browse/FLINK-25429
             Project: Flink
          Issue Type: Improvement
          Components: Runtime / State Backends
            Reporter: Yun Tang
            Assignee: Yun Tang


Current uploader implementation would close {{stream}} and {{fsStream}} one by 
one, which lead to {{fsStream}} closed twice.

{code:java}
        try (FSDataOutputStream fsStream = fileSystem.create(path, 
NO_OVERWRITE)) {
            fsStream.write(compression ? 1 : 0);
            try (OutputStreamWithPos stream = wrap(fsStream); ) {
                final Map<UploadTask, Map<StateChangeSet, Long>> tasksOffsets = 
new HashMap<>();
                for (UploadTask task : tasks) {
                    tasksOffsets.put(task, format.write(stream, 
task.changeSets));
                }
                FileStateHandle handle = new FileStateHandle(path, 
stream.getPos());
                // WARN: streams have to be closed before returning the results
                // otherwise JM may receive invalid handles
                return new LocalResult(tasksOffsets, handle);
            }
        }
{code}

Not all file system supports to close same stream twice.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to