[
https://issues.apache.org/jira/browse/FLINK-10356?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nico Kruber updated FLINK-10356:
--------------------------------
Description:
{{SpillingAdaptiveSpanningRecordDeserializer}} doesn't have any consistency
checks for usage calls or serializers behaving properly, e.g. to read only as
many bytes as available/promised for that record. At least these checks should
be added:
# Check that buffers have not been read from yet before adding them (this is
an invariant {{SpillingAdaptiveSpanningRecordDeserializer}} works with and from
what I can see, it is followed now.
# Check that after deserialization, we actually consumed {{recordLength}} bytes
** If not, in the spanning deserializer, we currently simply skip the
remaining bytes.
** But in the non-spanning deserializer, we currently continue from the wrong
offset.
# Protect against {{setNextBuffer}} being called before draining all available
records
was:
{{SpillingAdaptiveSpanningRecordDeserializer}} doesn't have any consistency
checks for usage calls or serializers behaving properly, e.g. to read only as
many bytes as available/promised for that record. At least these checks should
be added:
# Check that buffers have not been read from yet before adding them (this is
an invariant {{SpillingAdaptiveSpanningRecordDeserializer}} works with and
from what I can see, it is followed now}}.
# Check that after deserialization, we actually consumed {{recordLength}} bytes
** If not, in the spanning deserializer, we currently simply skip the
remaining bytes.
** But in the non-spanning deserializer, we currently continue from the wrong
offset.
# Protect against {{setNextBuffer}} being called before draining all available
records
> Add sanity checks to SpillingAdaptiveSpanningRecordDeserializer
> ---------------------------------------------------------------
>
> Key: FLINK-10356
> URL: https://issues.apache.org/jira/browse/FLINK-10356
> Project: Flink
> Issue Type: Improvement
> Components: Network
> Affects Versions: 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.6.0, 1.6.1, 1.7.0, 1.5.4
> Reporter: Nico Kruber
> Assignee: Nico Kruber
> Priority: Major
>
> {{SpillingAdaptiveSpanningRecordDeserializer}} doesn't have any consistency
> checks for usage calls or serializers behaving properly, e.g. to read only as
> many bytes as available/promised for that record. At least these checks
> should be added:
> # Check that buffers have not been read from yet before adding them (this is
> an invariant {{SpillingAdaptiveSpanningRecordDeserializer}} works with and
> from what I can see, it is followed now.
> # Check that after deserialization, we actually consumed {{recordLength}}
> bytes
> ** If not, in the spanning deserializer, we currently simply skip the
> remaining bytes.
> ** But in the non-spanning deserializer, we currently continue from the
> wrong offset.
> # Protect against {{setNextBuffer}} being called before draining all
> available records
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)