[ 
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

Reply via email to