[ https://issues.apache.org/jira/browse/JCR-3652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13749883#comment-13749883 ]
Thomas Mueller commented on JCR-3652: ------------------------------------- It turned out there is a property named "jcr:isCheckedOut" of type boolean, non-multi-valued, but with a values array of length 0. The toString representation of this property is: {code} 582b5739-0696-4fa8-904f-eade273feab0/{http://www.jcp.org/jcr/1.0}isCheckedOut(Boolean) = [] {code} Now the question is, how could the property get an empty (zero-length) values array. In theory that could be caused by out-of-memory after setting the property type and isMultiValued flag, and before setting the values array. But I don't see any out-of-memory errors, and there are 11 such nodes. So I think there has to be a different explanation, like a repository exception after setting the property type and isMultiValued flag, and before setting the values array. > Bundle serialization broken due to missing byte for boolean property > -------------------------------------------------------------------- > > Key: JCR-3652 > URL: https://issues.apache.org/jira/browse/JCR-3652 > Project: Jackrabbit Content Repository > Issue Type: New Feature > Components: jackrabbit-core > Environment: Windows > java version "1.6.0_38" > Java(TM) SE Runtime Environment (build 1.6.0_38-b05) > Java HotSpot(TM) 64-Bit Server VM (build 20.13-b02, mixed mode) > Reporter: Thomas Mueller > Assignee: Thomas Mueller > Priority: Minor > Fix For: 2.4.4 > > Attachments: JCR-3652.patch > > > 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