Thomas Mueller created OAK-973:
----------------------------------

             Summary: Bundle serialization broken due to missing byte for 
boolean property
                 Key: OAK-973
                 URL: https://issues.apache.org/jira/browse/OAK-973
             Project: Jackrabbit Oak
          Issue Type: New Feature
            Reporter: Thomas Mueller
            Assignee: Thomas Mueller
            Priority: Minor


I have got a strange case where some node bundle is broken, seemingly because a 
byte is missing. I can't explain the missing byte, but it is reproducible, 
meaning that writing the bundles again will break them again. There are 11 
broken bundles, 10 of them have the size 480 bytes and one is slightly larger. 
It is always a boolean property value that is missing, always the value for the 
property jcr:isCheckedOut.

As a (temporary) solution, and to help analyze what the problem might be, I 
will create a patch that does the following:

* When serializing a bundle, check if the byte array can be de-serialized. If 
not, then try again. Starting with the 3th try, use a slower variant where 
before and after writing the boolean value the buffer is flushed. I'm aware 
that ByteArrayOutputStream.flush doesn't do much, but maybe it solves the 
problem (let's see) if the problem is related to a JVM issue.

* If de-serializing a bundle fails, check if it's because of a missing boolean 
property value. If yes, insert the missing byte.

I have also added some log messages (warning / error) to help analyze the 
problem.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to