Details

Description

While analysing a build issue in Elasticsearch I stumpled upon org.apache.lucene.util.IOUtils.fsync. It has a retry loop in fsync whenever an IOException occurs. However, there are lots of instances where a retry is not useful, e.g. when a channel has been closed, a ClosedChannelException is thrown and IOUtils#fsync still tries to fsync multiple times on the closed channel.

After bringing the issue to Robert's attention, he even opted for removing the retry logic entirely for fsyncing.