HBase relies on FileSystems implementing CanUnbuffer.unbuffer() to force input streams to free up remote connections (
HBASE-9393). This works for HDFS, but not elsewhere.
S3A input stream can implement CanUnbuffer.unbuffer() by closing the input stream and relying on lazy seek to reopen it on demand.
- Contract specification of unbuffer. As in "who added a new feature to filesystems but forgot to mention what it should do?"
- Contract test for filesystems which declare their support.
- S3AInputStream to call closeStream() on a call to unbuffer().
- Test case