[ 
https://issues.apache.org/jira/browse/UIMA-4743?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Marshall Schor resolved UIMA-4743.
----------------------------------
    Resolution: Fixed

fixed.  The output format changes for delta binary serialization of 
modifications to existing byte/short/long arrays.  The old format, in this 
case, could not be read, so there's no backwards compatible issue to fixing 
this.

> errors in plain binary cas delta serialization of short/long modifications to 
> arrays
> ------------------------------------------------------------------------------------
>
>                 Key: UIMA-4743
>                 URL: https://issues.apache.org/jira/browse/UIMA-4743
>             Project: UIMA
>          Issue Type: Bug
>          Components: Core Java Framework
>    Affects Versions: 2.8.1SDK
>            Reporter: Marshall Schor
>            Assignee: Marshall Schor
>             Fix For: 2.9.0SDK
>
>
> (Found by code reading, needs test case) The code in class CASSerializer for 
> handling long/dbl value modified cells in arrays while doing delta 
> serialization appears to have a some copy/paste kinds of errors. The first 
> (line 583) attempts to get the collection of modified addrs in the long 
> heap,but gets the "short" rather than "long" addrs.  The second (line 587) 
> writes the address of the modified value using a writeShort, which both 
> silently fails if the value is > 32767, and only writes 2 bytes, while the 
> corresponding "read" (in CASImpl after comment "//modified Short heap" reads 
> the addresses as an integer.  This makes all reading after this off by 2.
> This same kind of error (writing the address as a short) also appears in the 
> handling of modifications of shorts (line 570).
> -Fixing this will result in writing more bytes to the serialization stream, 
> so the streams won't be "compatible".  Therefore, do some kind of 
> incrementing of versions and serialVersionId values to signal to readers this 
> format change.  Updating this for client/server pairs will require updates at 
> both ends.-
> This bug causes failure of deserialization, if any short or long array values 
> are modified and delta serialization is being used, so needs to be fixed.
> Added a new test case to check this area and found another issue: the 
> rounding to word boundaries while serializing delta changes to byte and short 
> arrays was incorrect.  Fix that as well.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to