avro-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF GitHub Bot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AVRO-1743) BlockingBinaryEncoder should override writeFixed(ByteBuffer bytes)
Date Wed, 16 Mar 2016 21:50:33 GMT

    [ https://issues.apache.org/jira/browse/AVRO-1743?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15198259#comment-15198259

ASF GitHub Bot commented on AVRO-1743:

GitHub user tbobrovytsky opened a pull request:


    AVRO-1743: override writeFixed in BlockingBinaryEncoder


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/tbobrovytsky/avro master

Alternatively you can review and apply these changes as the patch at:


To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #78


> BlockingBinaryEncoder should override writeFixed(ByteBuffer bytes)
> ------------------------------------------------------------------
>                 Key: AVRO-1743
>                 URL: https://issues.apache.org/jira/browse/AVRO-1743
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>    Affects Versions: 1.7.6, 1.7.7
>         Environment: All environments
>            Reporter: Dmitry Spikhalskiy
>              Labels: starter
> BlockingBinaryEncoder which extends BufferedBinaryEncoder should override "public void
writeFixed(ByteBuffer bytes) throws IOException" method.
> Now if we use BlockingBinaryEncoder - all writeFixed(ByteBuffer bytes) are addressed
by BufferedBinaryEncoder. As a result, if  "!bytes.hasArray() && bytes.remaining()
> bulkLimit", then in flushBuffer() we flush empty buffer from BufferedBinaryEncoder and
don't flush actual buffer from BlockingBinaryEncoder.
> I prepared localized unit tests to replicate bugs here: https://github.com/Spikhalskiy/avro-blockingbinaryencoder-error
> Bug could appears in silently incorrect serialization (We will read another object) or
in deserialization errors. Both replicated in provided tests.
> Looks like BlockingBinaryEncoder which extends BufferedBinaryEncoder is error-prone approach
and mistake in class hierarchy. We mostly override everything from BufferedBinaryEncoder,
creating unused buffers and fields (like double pos, buf, etc), and it's already not first
bug relating to "somebody forget to override method in BlockingBinaryEncoder from BufferedBinaryEncoder"
(ex. https://issues.apache.org/jira/browse/AVRO-88). So, this classes should be separated
at all or have common interface, or at least work with same buffer and pos instances. But
BlockingBinaryEncoder shouldn't inherit method implementations, which work with another buffer

This message was sent by Atlassian JIRA

View raw message