You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Ian Boston (JIRA)" <ji...@apache.org> on 2007/05/13 14:28:15 UTC

[jira] Created: (JCR-914) ReadRecord.readChar giving IOException on clusterd MySQL installtion

ReadRecord.readChar giving IOException on clusterd MySQL installtion
--------------------------------------------------------------------

                 Key: JCR-914
                 URL: https://issues.apache.org/jira/browse/JCR-914
             Project: Jackrabbit
          Issue Type: Bug
          Components: core
    Affects Versions: 1.3
         Environment: OSX 10.4.x, JDK 1.5, Tomcat 5.5.16 (not important probably), SpringFramework (1.2.8, not important ?) 
MySQL 5.0.18, MySQL JConnector 3.1.12
            Reporter: Ian Boston


With a Journal setup like
 <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
    <param name="revision" value="${rep.home}/revision.log" />
    <param name="driver" value="com.mysql.jdbc.Driver" />
    <param name="url" value="jdbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&amp;characterEncodi
ng=UTF-8" />
    <param name="user" value="sakai22"/>
    <param name="password" value="sakai22"/>
  </Journal>

2 Nodes in the cluster both on the same machine, (seperate JVM's)
All persistance managers using the same MySQL DB,

Then I connect a webDAV client to one node and upload about 300Mb of data, which all works perfectly on the node I am connected to.

On the other node in the cluster I see a lot of the following tracebacks. The Revisions are not in sequence indicateing that most are Ok, and the tracebacks continue untill all activity (including indexing has finished)

ERROR: Unable to read revision '48'. (2007-05-13 09:27:24,209 ClusterNode-localhost1_org.apache.jackrabbit.core.cluster.ClusterNode)
org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
        at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
        at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
        at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
        at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
        at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
        at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
        at java.lang.Thread.run(Thread.java:613)
Caused by: java.io.EOFException
        at java.io.DataInputStream.readChar(DataInputStream.java:333)
        at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
        ... 6 more


Looking at the Code in that area, the for loop exists on a null char '\0'. It might be possible that the MySQL driver or table setup is truncating null chars giving rise to the errors.

The idle node that is creating the errors otherwise looks perfect and the content appears on the idle node within a second or so of being uploaded on the active node.

(I am uploading using a webDav mount in OSX Finder)

I will try with the FileJournal just to check that its not a MySQL or JDBC driver issue.


 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (JCR-914) ReadRecord.readChar giving IOException on clusterd MySQL installtion

Posted by "Ian Boston (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ian Boston updated JCR-914:
---------------------------

    Attachment: jcr-journal.tgz

Tar of the jornal shortly after  the previous sync error... just in case there is anything in it that helps.

> ReadRecord.readChar giving IOException on clusterd MySQL installtion
> --------------------------------------------------------------------
>
>                 Key: JCR-914
>                 URL: https://issues.apache.org/jira/browse/JCR-914
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: OSX 10.4.x, JDK 1.5, Tomcat 5.5.16 (not important probably), SpringFramework (1.2.8, not important ?) 
> MySQL 5.0.18, MySQL JConnector 3.1.12
>            Reporter: Ian Boston
>         Attachments: jcr-journal.tgz
>
>
> With a Journal setup like
>  <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>     <param name="revision" value="${rep.home}/revision.log" />
>     <param name="driver" value="com.mysql.jdbc.Driver" />
>     <param name="url" value="jdbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&amp;characterEncodi
> ng=UTF-8" />
>     <param name="user" value="sakai22"/>
>     <param name="password" value="sakai22"/>
>   </Journal>
> 2 Nodes in the cluster both on the same machine, (seperate JVM's)
> All persistance managers using the same MySQL DB,
> Then I connect a webDAV client to one node and upload about 300Mb of data, which all works perfectly on the node I am connected to.
> On the other node in the cluster I see a lot of the following tracebacks. The Revisions are not in sequence indicateing that most are Ok, and the tracebacks continue untill all activity (including indexing has finished)
> ERROR: Unable to read revision '48'. (2007-05-13 09:27:24,209 ClusterNode-localhost1_org.apache.jackrabbit.core.cluster.ClusterNode)
> org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.io.EOFException
>         at java.io.DataInputStream.readChar(DataInputStream.java:333)
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
>         ... 6 more
> Looking at the Code in that area, the for loop exists on a null char '\0'. It might be possible that the MySQL driver or table setup is truncating null chars giving rise to the errors.
> The idle node that is creating the errors otherwise looks perfect and the content appears on the idle node within a second or so of being uploaded on the active node.
> (I am uploading using a webDav mount in OSX Finder)
> I will try with the FileJournal just to check that its not a MySQL or JDBC driver issue.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (JCR-914) ReadRecord.readChar giving IOException on clusterd MySQL installtion

Posted by "Ian Boston (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/JCR-914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12495372 ] 

Ian Boston commented on JCR-914:
--------------------------------

Same thing happens with FileJournal on a shared disk

ERROR: Unable to read revision '3730'. (2007-05-13 16:32:36,129 ClusterNode-localhost2_org.apache.jackrabbit.core.cluster.ClusterNode)
org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
        at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
        at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
        at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
        at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
        at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
        at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
        at java.lang.Thread.run(Thread.java:613)
Caused by: java.io.EOFException
        at java.io.DataInputStream.readChar(DataInputStream.java:333)
        at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
        ... 6 more


I will attach the journal at arround the same time (might be a bit later)



> ReadRecord.readChar giving IOException on clusterd MySQL installtion
> --------------------------------------------------------------------
>
>                 Key: JCR-914
>                 URL: https://issues.apache.org/jira/browse/JCR-914
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: OSX 10.4.x, JDK 1.5, Tomcat 5.5.16 (not important probably), SpringFramework (1.2.8, not important ?) 
> MySQL 5.0.18, MySQL JConnector 3.1.12
>            Reporter: Ian Boston
>
> With a Journal setup like
>  <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>     <param name="revision" value="${rep.home}/revision.log" />
>     <param name="driver" value="com.mysql.jdbc.Driver" />
>     <param name="url" value="jdbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&amp;characterEncodi
> ng=UTF-8" />
>     <param name="user" value="sakai22"/>
>     <param name="password" value="sakai22"/>
>   </Journal>
> 2 Nodes in the cluster both on the same machine, (seperate JVM's)
> All persistance managers using the same MySQL DB,
> Then I connect a webDAV client to one node and upload about 300Mb of data, which all works perfectly on the node I am connected to.
> On the other node in the cluster I see a lot of the following tracebacks. The Revisions are not in sequence indicateing that most are Ok, and the tracebacks continue untill all activity (including indexing has finished)
> ERROR: Unable to read revision '48'. (2007-05-13 09:27:24,209 ClusterNode-localhost1_org.apache.jackrabbit.core.cluster.ClusterNode)
> org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.io.EOFException
>         at java.io.DataInputStream.readChar(DataInputStream.java:333)
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
>         ... 6 more
> Looking at the Code in that area, the for loop exists on a null char '\0'. It might be possible that the MySQL driver or table setup is truncating null chars giving rise to the errors.
> The idle node that is creating the errors otherwise looks perfect and the content appears on the idle node within a second or so of being uploaded on the active node.
> (I am uploading using a webDav mount in OSX Finder)
> I will try with the FileJournal just to check that its not a MySQL or JDBC driver issue.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (JCR-914) ReadRecord.readChar giving IOException on clusterd MySQL installtion

Posted by "Dominique Pfister (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dominique Pfister reassigned JCR-914:
-------------------------------------

    Assignee: Dominique Pfister

> ReadRecord.readChar giving IOException on clusterd MySQL installtion
> --------------------------------------------------------------------
>
>                 Key: JCR-914
>                 URL: https://issues.apache.org/jira/browse/JCR-914
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: OSX 10.4.x, JDK 1.5, Tomcat 5.5.16 (not important probably), SpringFramework (1.2.8, not important ?) 
> MySQL 5.0.18, MySQL JConnector 3.1.12
>            Reporter: Ian Boston
>         Assigned To: Dominique Pfister
>         Attachments: jcr-journal.tgz, RepositoryConfig.xml
>
>
> With a Journal setup like
>  <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>     <param name="revision" value="${rep.home}/revision.log" />
>     <param name="driver" value="com.mysql.jdbc.Driver" />
>     <param name="url" value="jdbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&amp;characterEncodi
> ng=UTF-8" />
>     <param name="user" value="sakai22"/>
>     <param name="password" value="sakai22"/>
>   </Journal>
> 2 Nodes in the cluster both on the same machine, (seperate JVM's)
> All persistance managers using the same MySQL DB,
> Then I connect a webDAV client to one node and upload about 300Mb of data, which all works perfectly on the node I am connected to.
> On the other node in the cluster I see a lot of the following tracebacks. The Revisions are not in sequence indicateing that most are Ok, and the tracebacks continue untill all activity (including indexing has finished)
> ERROR: Unable to read revision '48'. (2007-05-13 09:27:24,209 ClusterNode-localhost1_org.apache.jackrabbit.core.cluster.ClusterNode)
> org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.io.EOFException
>         at java.io.DataInputStream.readChar(DataInputStream.java:333)
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
>         ... 6 more
> Looking at the Code in that area, the for loop exists on a null char '\0'. It might be possible that the MySQL driver or table setup is truncating null chars giving rise to the errors.
> The idle node that is creating the errors otherwise looks perfect and the content appears on the idle node within a second or so of being uploaded on the active node.
> (I am uploading using a webDav mount in OSX Finder)
> I will try with the FileJournal just to check that its not a MySQL or JDBC driver issue.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (JCR-914) ReadRecord.readChar giving IOException on clusterd MySQL installtion

Posted by "Dominique Pfister (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dominique Pfister resolved JCR-914.
-----------------------------------

    Resolution: Duplicate

Thanks to the journal log appended, I was able to find and analyse the bad record. It contains a badly terminated unlock operation, as reported by JCR-915.

> ReadRecord.readChar giving IOException on clusterd MySQL installtion
> --------------------------------------------------------------------
>
>                 Key: JCR-914
>                 URL: https://issues.apache.org/jira/browse/JCR-914
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: OSX 10.4.x, JDK 1.5, Tomcat 5.5.16 (not important probably), SpringFramework (1.2.8, not important ?) 
> MySQL 5.0.18, MySQL JConnector 3.1.12
>            Reporter: Ian Boston
>         Assigned To: Dominique Pfister
>         Attachments: jcr-journal.tgz, RepositoryConfig.xml
>
>
> With a Journal setup like
>  <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>     <param name="revision" value="${rep.home}/revision.log" />
>     <param name="driver" value="com.mysql.jdbc.Driver" />
>     <param name="url" value="jdbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&amp;characterEncodi
> ng=UTF-8" />
>     <param name="user" value="sakai22"/>
>     <param name="password" value="sakai22"/>
>   </Journal>
> 2 Nodes in the cluster both on the same machine, (seperate JVM's)
> All persistance managers using the same MySQL DB,
> Then I connect a webDAV client to one node and upload about 300Mb of data, which all works perfectly on the node I am connected to.
> On the other node in the cluster I see a lot of the following tracebacks. The Revisions are not in sequence indicateing that most are Ok, and the tracebacks continue untill all activity (including indexing has finished)
> ERROR: Unable to read revision '48'. (2007-05-13 09:27:24,209 ClusterNode-localhost1_org.apache.jackrabbit.core.cluster.ClusterNode)
> org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.io.EOFException
>         at java.io.DataInputStream.readChar(DataInputStream.java:333)
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
>         ... 6 more
> Looking at the Code in that area, the for loop exists on a null char '\0'. It might be possible that the MySQL driver or table setup is truncating null chars giving rise to the errors.
> The idle node that is creating the errors otherwise looks perfect and the content appears on the idle node within a second or so of being uploaded on the active node.
> (I am uploading using a webDav mount in OSX Finder)
> I will try with the FileJournal just to check that its not a MySQL or JDBC driver issue.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (JCR-914) ReadRecord.readChar giving IOException on clusterd MySQL installtion

Posted by "Ian Boston (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/JCR-914?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ian Boston updated JCR-914:
---------------------------

    Attachment: RepositoryConfig.xml

The current repository config file, just in case there is a config error.

This file is pre-processed replacing some ${} entries. Content bodies are stored in the DB at the moment.

> ReadRecord.readChar giving IOException on clusterd MySQL installtion
> --------------------------------------------------------------------
>
>                 Key: JCR-914
>                 URL: https://issues.apache.org/jira/browse/JCR-914
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.3
>         Environment: OSX 10.4.x, JDK 1.5, Tomcat 5.5.16 (not important probably), SpringFramework (1.2.8, not important ?) 
> MySQL 5.0.18, MySQL JConnector 3.1.12
>            Reporter: Ian Boston
>         Attachments: jcr-journal.tgz, RepositoryConfig.xml
>
>
> With a Journal setup like
>  <Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
>     <param name="revision" value="${rep.home}/revision.log" />
>     <param name="driver" value="com.mysql.jdbc.Driver" />
>     <param name="url" value="jdbc:mysql://127.0.0.1:3306/sakai22?useUnicode=true&amp;characterEncodi
> ng=UTF-8" />
>     <param name="user" value="sakai22"/>
>     <param name="password" value="sakai22"/>
>   </Journal>
> 2 Nodes in the cluster both on the same machine, (seperate JVM's)
> All persistance managers using the same MySQL DB,
> Then I connect a webDAV client to one node and upload about 300Mb of data, which all works perfectly on the node I am connected to.
> On the other node in the cluster I see a lot of the following tracebacks. The Revisions are not in sequence indicateing that most are Ok, and the tracebacks continue untill all activity (including indexing has finished)
> ERROR: Unable to read revision '48'. (2007-05-13 09:27:24,209 ClusterNode-localhost1_org.apache.jackrabbit.core.cluster.ClusterNode)
> org.apache.jackrabbit.core.journal.JournalException: I/O error while reading character.
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:121)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.consume(ClusterNode.java:875)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.doSync(AbstractJournal.java:191)
>         at org.apache.jackrabbit.core.journal.AbstractJournal.sync(AbstractJournal.java:166)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.sync(ClusterNode.java:283)
>         at org.apache.jackrabbit.core.cluster.ClusterNode.run(ClusterNode.java:254)
>         at java.lang.Thread.run(Thread.java:613)
> Caused by: java.io.EOFException
>         at java.io.DataInputStream.readChar(DataInputStream.java:333)
>         at org.apache.jackrabbit.core.journal.ReadRecord.readChar(ReadRecord.java:118)
>         ... 6 more
> Looking at the Code in that area, the for loop exists on a null char '\0'. It might be possible that the MySQL driver or table setup is truncating null chars giving rise to the errors.
> The idle node that is creating the errors otherwise looks perfect and the content appears on the idle node within a second or so of being uploaded on the active node.
> (I am uploading using a webDav mount in OSX Finder)
> I will try with the FileJournal just to check that its not a MySQL or JDBC driver issue.
>  

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.