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

Marshall Schor updated UIMA-4743:
---------------------------------
    Description: 
(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.

  was:
(Found by code reading, needs test case) The code for handling long/dbl value 
modified cells while doing delta serialization appears to have a some 
copy/paste kinds of errors. The first (line 583) gets the modified addrs, but 
gets the "short" rather than "long" addrs.  The second (line 587) writes the 
address of the modified value using a writeShort, which silently fails if the 
value is > 32767. 

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. 


> 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.



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

Reply via email to