[
https://issues.apache.org/jira/browse/JCR-3652?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13746050#comment-13746050
]
Thomas Mueller commented on JCR-3652:
-------------------------------------
Additional change to help verify the patch is installed:
{code}
#P jackrabbit-core-r-1372412
Index:
src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java
===================================================================
---
src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java
(revision 1372412)
+++
src/main/java/org/apache/jackrabbit/core/persistence/util/BundleBinding.java
(working copy)
@@ -23,11 +25,21 @@
import org.apache.jackrabbit.core.data.DataStore;
import org.apache.jackrabbit.core.id.NodeId;
import org.apache.jackrabbit.core.util.StringIndex;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* This Class implements efficient serialization methods for item states.
*/
public class BundleBinding {
+
+ private static boolean ALLOW_BROKEN_BUNDLES =
Boolean.getBoolean("jackrabbit.allowBrokenBundleWrites");
+
+ private static Logger log = LoggerFactory.getLogger(BundleBinding.class);
+
+ static {
+ log.warn("Please note this is a patched version of Jackrabbit which is
slightly slower. See JCR-3652.");
+ }
{code}
> 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
> 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