Hi Miguel, writing to the journal log file should only be possible after having obtained an exclusive lock on the global revision file (R), located in the same directory as the journal log file (L). The exact sequence of operations is as follows:
- exclusive lock is obtained on R - journal entry appended to log file L - revision counter is updated in R - exclusive lock is released on R This should rule out simultaneous writes to the log file L. Are you easily able to reproduce this issue, starting with an empty journal file? I could eliminate some small issues in the not yet released 1.2.2 branch, but I still would be very glad to know more about how and when this problem arises... Kind regards Dominique On 2/14/07, Miguel Ángel Jiménez <[EMAIL PROTECTED]> wrote:
Hi, I'm trying the new cluster feature of Jackrabbit 1.2.1 and found some issues. Using FileJournal to synchronize state between instances, we are experiencing some errors that point to a possible corruption of the log file: 2007-02-14 10:34:00,911 ERROR [org.apache.jackrabbit.core.RepositoryImpl] Unable to start clustered node, forcing shutdown... org.apache.jackrabbit.core.cluster.JournalException: Unable to iterate over modified records: malformed input around byte 178 at org.apache.jackrabbit.core.cluster.FileJournal.sync(FileJournal.java :313) at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java :217) at org.apache.jackrabbit.core.cluster.ClusterNode.start(ClusterNode.java :164) at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java :308) at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java :573) at org.apache.jackrabbit.core.jndi.BindableRepository.createRepository( BindableRepository.java:174) at org.apache.jackrabbit.core.jndi.BindableRepository.init( BindableRepository.java:138) at org.apache.jackrabbit.core.jndi.BindableRepository.create( BindableRepository.java:125) at org.apache.jackrabbit.core.jndi.BindableRepositoryFactory.createInstance( BindableRepositoryFactory.java:59) at org.apache.jackrabbit.core.jndi.RegistryHelper.registerRepository( RegistryHelper.java:60) at com.germinus.xpression.cms.jcr.EmbeddedRepositoryFactory.getRepository( EmbeddedRepositoryFactory.java:50) at com.germinus.xpression.cms.jcr.JCRUtil.initRepository(JCRUtil.java :243) ... Caused by: java.io.UTFDataFormatException: malformed input around byte 178 at java.io.DataInputStream.readUTF(DataInputStream.java:639) at org.apache.jackrabbit.core.cluster.FileRecord.readCreator( FileRecord.java:242) at org.apache.jackrabbit.core.cluster.FileRecord.<init>(FileRecord.java :106) at org.apache.jackrabbit.core.cluster.FileRecordCursor.next( FileRecordCursor.java:101) at org.apache.jackrabbit.core.cluster.FileJournal.sync(FileJournal.java :303) ... 130 more Perhaps I'm wrong but looks like two instances are writing the file simultaneously. Is this behaviour known or misconfiguration? The journal log is placed in a shared folder on a Linux machine and exported by SAMBA to the instances. I have tested the lock file capabilities of the shared filesystem and they are ok. -- Miguel.