tree 6cc42ae89bc3e4b00e623c616a5e5aa286413429
parent 019361e0da0677360788f0ad96c520fb8c296d7d
author Todd Gao <todd.gao.2013@gmail.com> 1658692108 +0800
committer GitHub <noreply@github.com> 1658692108 -0700
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJi3aIMCRBK7hj4Ov3rIwAAeIAIAHynWsHgb8KYbuNbRdcZzPqm
 xx7vIXIEX+dDKgoHBWOD2XT5npgvJBbjfDyzfiXZQB597yioz/ujpVQHanb8sS1L
 RmcdiPH24LvNkd4ovk+WsM9B/7JOiAmS73rgC68X7eJn2I7hiv+KjDHy2aSrfLbc
 RHaEzO3yrHifSH4E5z/7A2yGBuq8+yi+0rq17TlY6Co6zo/PY80S9WGsc4jhOcea
 3Aw7hiIqYxgvvuySR4irhmIjGv1hoJxIiIPwD6flRHt910cNDkBRyIVaCanbVcZk
 SgnITOca436LWeGdTnGpFAqcCatXsAD7yaDncmcibrq9VObEOivuoH74sytBIHc=
 =CYhf
 -----END PGP SIGNATURE-----
 

PARQUET-2134: Fix type checking in HadoopStreams.wrap (#951)

HadoopStreams.wrap produces a wrong H2SeekableInputStream if the
passed-in FSDataInputStream wraps another FSDataInputStream.

Since [HDFS-14111](https://issues.apache.org/jira/browse/HDFS-14111) all
input streams in the hadoop codebase which implement `ByteBufferReadable`
return true on the StreamCapabilities probe
`stream.hasCapability("in:readbytebuffer")`;
those which don't are forbidden to do so.

This means that on Hadoop 3.3.0+ the preferred way to probe for the API
is to ask the stream.

The StreamCapabilities probe was added in Hadoop 2.9. Along with
making all use of `ByteBufferReadable` non-reflective, this makes
the checks fairly straightforward.

Tests verify that if a stream implements `ByteBufferReadable' then
it will be bonded to H2SeekableInputStream, even if multiply wrapped
by FSDataInputStreams, and that if it doesn't, it won't.

Co-authored-by: Steve Loughran <stevel@cloudera.com>

Co-authored-by: Steve Loughran <stevel@cloudera.com>