## What is the purpose of the change

Currently all the calls to one of the `FileChannel.write()` methods assume that 
this method will not return before the whole buffer is written, like the one in 
`AsynchronousFileIOChannel.write()`. However, this assumption may not be right 
for all the environments and there is no such guarantee. 

## Brief change log

- add `FileUtils#writeCompletely()` that loops through the provided buffer 
until it is completely written
- adapt all uses of `FileChannel.write()` to use this helper method

## Verifying this change

No tests were added.

- Does it make sense to test the utility method? no, the functionality is too 
basic
- Previously existing tests for writing to a `FileChannel` apparently only 
covered complete writes through a single call (no failed tests afaik). 
Extending them may be difficult difficult (`FileChannel` usually internal, need 
to override it to force the behaviour) and potentially not necessary either - 
waiting for a second opinion here.

## 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** (per 
buffer written to disk)
  - Anything that affects deployment or recovery: JobManager (and its 
components), Checkpointing, Yarn/Mesos, ZooKeeper: **no**
  - The S3 file system connector: **no**

## Documentation

  - Does this pull request introduce a new feature? **no**
  - If yes, how is the feature documented? **not documented**


[ Full content available at: https://github.com/apache/flink/pull/6788 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to