You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by Lorenzo Dini <Lo...@cern.ch> on 2008/05/06 09:47:29 UTC

Re: Problems with MySqlPersistenceManager: "unable to update item"

Hi,

thank you for the reply.

I attache the full DEBUG logs, from the creation of the node 
5462ac5e-ff4d-4489-9423-427f1e3d4520 to the exception.

if you please can have a look at the entries, I do not see any other 
exception beofore the "unable to update item"...

The node is created at line 1 of the log.

Then all the items are added and cached.

Just before the exception, I see another creation of the same node 
5462ac5e-ff4d-4489-9423-427f1e3d4520 (line 320).

It seems that the node is not found in the DB and it is trying to 
recreate it??

Do I have to configure MySQL in a custom way to use the bundles??

Lorenzo



Stefan Guggisberg ha scritto:
> hi lorenzo
> 
> On Tue, Apr 29, 2008 at 6:32 PM, Lorenzo Dini <Lo...@cern.ch> wrote:
>> Hi all,
>>
>>  I get an exception while saving nodes with MySqlPersistenceManager that it
>> does not happen if I use DerbyPersistenceManager.
>>
>>  The weird thing is that executing the same code several times under the
>> same conditions (the code stores a long sequence of nodes), the exception
>> not always at the same point but happens randomly on different nodes.
>>
>>  Cannot be the DB connection because the DB is on the same machine.
>>
>>  This is the stacktrace:
>>
>>  RepositoryException:
>> /etics:volatiles/etics:projects[2]/etics:components[6]: unable to update
>> item.: a057d13d-c342-4b07-b7d6-ed088b4f6b20
>>  org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1258)
>>
>> org.etics.repository.webservice.persistency.SubmissionManager.storeConfigurations(SubmissionManager.java:590)
>>
>> org.etics.repository.webservice.persistency.SubmissionManager.storeComponents(SubmissionManager.java:511)
>>
>> org.etics.repository.webservice.persistency.SubmissionManager.storeProjects(SubmissionManager.java:301)
>>
>> org.etics.repository.webservice.persistency.SubmissionManager.saveArtefactStructure(SubmissionManager.java:160)
>>
>> org.etics.repository.webservice.persistency.SubmissionQueue$SubmissionRun.run(SubmissionQueue.java:189)
>>
>>
>>  Debugging a bit I saw the real exception: NoSuchItemStateException in
>> AbstractBundlePersistenceManager.java:559
>>
>>  553 if (state.isNode()) {
>>  554   NodeId nodeId = (NodeId) state.getId();
>>  555   NodePropBundle bundle = (NodePropBundle) modified.get(nodeId);
>>  556   if (bundle == null) {
>>  557     bundle = getBundle(nodeId);
>>  558     if (bundle == null) {
>>  559       throw new NoSuchItemStateException(nodeId.toString());
>>  560     }
>>  561     modified.put(nodeId, bundle);
>>  562   }
>>  563   bundle.update((NodeState) state);
>>  564 }
>>
>>
>>  This is my configuration:
>>
>>  <PersistenceManager
>> class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
>>         <param name="bundleCacheSize" value="8"/>
>>         <param name="consistencyCheck" value="true"/>
>>         <param name="minBlobSize" value="16384"/>
>>         <param name="driver" value="com.mysql.jdbc.Driver"/>
>>         <param name="url" value="jdbc:mysql://localhost:3306/bundle"/>
>>         <param name="user" value="***"/>
>>         <param name="password" value="***"/>
>>         <param name="schema" value="mysql"/>
>>         <param name="errorHandling" value=""/>
>>         <param name="schemaObjectPrefix" value="${wsp.name}_"/>
>>  </PersistenceManager>
>>
>>  libraries:
>>         jackrabbit-api-1.4.jar
>>         jackrabbit-core-1.4.2.jar
>>         jackrabbit-jcr-commons-1.4.2.jar
>>         jackrabbit-spi-1.4.jar
>>         jackrabbit-spi-commons-1.4.jar
>>         jackrabbit-text-extractors-1.4.jar
>>         lucene-core-2.2.0.jar
>>
>>  MySQL Server Version: 4.1.20
>>
>>  I tried with both:
>>         mysql-connector-java-5.1.6-bin.jar
>>  and
>>         mysql-connector-java-3.1.10-bin.jar.
>>
>>
>>  Without changing anything, but using Derby, it works:
>>
>>  <PersistenceManager
>> class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
>>         <param name="url" value="jdbc:derby:{wsp.name}/db;create=true"/>
>>         <param name="schemaObjectPrefix" value="${wsp.name}"/>
>>  </PersistenceManager>
>>
>>
>>  I have been using the same code with Jackrabbit 1.3 for more than one year
>> now without problems (SimpleDBPersistanceManager on top of the same MySQL).
>>
>>  What can it be??
> 
> that's hard to tell without getting some more information. all i can
> say is that reading
> an existing  bundle from the db fails for some reason.
> 
> if you haven't done so already please increase the logging level. you should
> find more detailed information regarding the issue causing the failure
> in the log.
> 
> could you please provide all relevant log entries?
> 
> does the failure occur after a certain period of time? if yes it could
> be related
> to the auto-reconnect logic. is the db completely left alone or is it backed up/
> restarted periodically?
> 
> last but not least:
> i know it's difficult but is there a chance that you could put
> together a simple
> test case for reproducing the issue?
> 
> cheers
> stefan
> 
>>  Thank you for your help.
>>
>>  Lorenzo
>>
>>
>>
>>  --
>>  *Lorenzo Dini*
>>
>>  CERN - European Organization for Nuclear Research
>>  Information Technology Department
>>  CH-1211 Geneva 23
>>
>>  Building 28 - Office 1-007
>>  Phone: +41 (0) 22 7674384
>>  Fax: +41 (0) 22 7668847
>>  E-mail: Lorenzo.Dini@cern.ch
>>

-- 
*Lorenzo Dini*

CERN - European Organization for Nuclear Research
Information Technology Department
CH-1211 Geneva 23

Building 28 - Office 1-007
Phone: +41 (0) 22 7674384
Fax: +41 (0) 22 7668847
E-mail: Lorenzo.Dini@cern.ch

Re: Problems with MySqlPersistenceManager: "unable to update item"

Posted by Stefan Guggisberg <st...@day.com>.
On Tue, May 6, 2008 at 4:28 PM, Lorenzo Dini <Lo...@cern.ch> wrote:
> Hi
>
>  I tried the latest version of MySQL (5.0.51) and it works just fine!
>
>  It seems there are problems with MySQL 5.0.27 and jackrabbit-core 1.4.2
> bundle.

i am glad the switch solves your issue but i still would want to know
the reason for
the failure ;)

please let me know if you've got some new insights,

thanks
stean

>
>  Lorenzo
>
>  Lorenzo Dini ha scritto:
>
>
>
> > Hi,
> >
> > thank you for the reply.
> >
> > I attache the full DEBUG logs, from the creation of the node
> 5462ac5e-ff4d-4489-9423-427f1e3d4520 to the exception.
> >
> > if you please can have a look at the entries, I do not see any other
> exception beofore the "unable to update item"...
> >
> > The node is created at line 1 of the log.
> >
> > Then all the items are added and cached.
> >
> > Just before the exception, I see another creation of the same node
> 5462ac5e-ff4d-4489-9423-427f1e3d4520 (line 320).
> >
> > It seems that the node is not found in the DB and it is trying to recreate
> it??
> >
> > Do I have to configure MySQL in a custom way to use the bundles??
> >
> > Lorenzo
> >
> >
> >
> > Stefan Guggisberg ha scritto:
> >
> > > hi lorenzo
> > >
> > > On Tue, Apr 29, 2008 at 6:32 PM, Lorenzo Dini <Lo...@cern.ch>
> wrote:
> > >
> > > > Hi all,
> > > >
> > > >  I get an exception while saving nodes with MySqlPersistenceManager
> that it
> > > > does not happen if I use DerbyPersistenceManager.
> > > >
> > > >  The weird thing is that executing the same code several times under
> the
> > > > same conditions (the code stores a long sequence of nodes), the
> exception
> > > > not always at the same point but happens randomly on different nodes.
> > > >
> > > >  Cannot be the DB connection because the DB is on the same machine.
> > > >
> > > >  This is the stacktrace:
> > > >
> > > >  RepositoryException:
> > > > /etics:volatiles/etics:projects[2]/etics:components[6]: unable to
> update
> > > > item.: a057d13d-c342-4b07-b7d6-ed088b4f6b20
> > > >  org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1258)
> > > >
> > > >
> org.etics.repository.webservice.persistency.SubmissionManager.storeConfigurations(SubmissionManager.java:590)
> > > >
> > > >
> org.etics.repository.webservice.persistency.SubmissionManager.storeComponents(SubmissionManager.java:511)
> > > >
> > > >
> org.etics.repository.webservice.persistency.SubmissionManager.storeProjects(SubmissionManager.java:301)
> > > >
> > > >
> org.etics.repository.webservice.persistency.SubmissionManager.saveArtefactStructure(SubmissionManager.java:160)
> > > >
> > > >
> org.etics.repository.webservice.persistency.SubmissionQueue$SubmissionRun.run(SubmissionQueue.java:189)
> > > >
> > > >
> > > >  Debugging a bit I saw the real exception: NoSuchItemStateException in
> > > > AbstractBundlePersistenceManager.java:559
> > > >
> > > >  553 if (state.isNode()) {
> > > >  554   NodeId nodeId = (NodeId) state.getId();
> > > >  555   NodePropBundle bundle = (NodePropBundle) modified.get(nodeId);
> > > >  556   if (bundle == null) {
> > > >  557     bundle = getBundle(nodeId);
> > > >  558     if (bundle == null) {
> > > >  559       throw new NoSuchItemStateException(nodeId.toString());
> > > >  560     }
> > > >  561     modified.put(nodeId, bundle);
> > > >  562   }
> > > >  563   bundle.update((NodeState) state);
> > > >  564 }
> > > >
> > > >
> > > >  This is my configuration:
> > > >
> > > >  <PersistenceManager
> > > >
> class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
> > > >        <param name="bundleCacheSize" value="8"/>
> > > >        <param name="consistencyCheck" value="true"/>
> > > >        <param name="minBlobSize" value="16384"/>
> > > >        <param name="driver" value="com.mysql.jdbc.Driver"/>
> > > >        <param name="url" value="jdbc:mysql://localhost:3306/bundle"/>
> > > >        <param name="user" value="***"/>
> > > >        <param name="password" value="***"/>
> > > >        <param name="schema" value="mysql"/>
> > > >        <param name="errorHandling" value=""/>
> > > >        <param name="schemaObjectPrefix" value="${wsp.name}_"/>
> > > >  </PersistenceManager>
> > > >
> > > >  libraries:
> > > >        jackrabbit-api-1.4.jar
> > > >        jackrabbit-core-1.4.2.jar
> > > >        jackrabbit-jcr-commons-1.4.2.jar
> > > >        jackrabbit-spi-1.4.jar
> > > >        jackrabbit-spi-commons-1.4.jar
> > > >        jackrabbit-text-extractors-1.4.jar
> > > >        lucene-core-2.2.0.jar
> > > >
> > > >  MySQL Server Version: 4.1.20
> > > >
> > > >  I tried with both:
> > > >        mysql-connector-java-5.1.6-bin.jar
> > > >  and
> > > >        mysql-connector-java-3.1.10-bin.jar.
> > > >
> > > >
> > > >  Without changing anything, but using Derby, it works:
> > > >
> > > >  <PersistenceManager
> > > >
> class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager">
> > > >        <param name="url"
> value="jdbc:derby:{wsp.name}/db;create=true"/>
> > > >        <param name="schemaObjectPrefix" value="${wsp.name}"/>
> > > >  </PersistenceManager>
> > > >
> > > >
> > > >  I have been using the same code with Jackrabbit 1.3 for more than one
> year
> > > > now without problems (SimpleDBPersistanceManager on top of the same
> MySQL).
> > > >
> > > >  What can it be??
> > > >
> > >
> > > that's hard to tell without getting some more information. all i can
> > > say is that reading
> > > an existing  bundle from the db fails for some reason.
> > >
> > > if you haven't done so already please increase the logging level. you
> should
> > > find more detailed information regarding the issue causing the failure
> > > in the log.
> > >
> > > could you please provide all relevant log entries?
> > >
> > > does the failure occur after a certain period of time? if yes it could
> > > be related
> > > to the auto-reconnect logic. is the db completely left alone or is it
> backed up/
> > > restarted periodically?
> > >
> > > last but not least:
> > > i know it's difficult but is there a chance that you could put
> > > together a simple
> > > test case for reproducing the issue?
> > >
> > > cheers
> > > stefan
> > >
> > >
> > > >  Thank you for your help.
> > > >
> > > >  Lorenzo
> > > >
> > > >
> > > >
> > > >  --
> > > >  *Lorenzo Dini*
> > > >
> > > >  CERN - European Organization for Nuclear Research
> > > >  Information Technology Department
> > > >  CH-1211 Geneva 23
> > > >
> > > >  Building 28 - Office 1-007
> > > >  Phone: +41 (0) 22 7674384
> > > >  Fax: +41 (0) 22 7668847
> > > >  E-mail: Lorenzo.Dini@cern.ch
> > > >
> > > >
> > >
> >
> >
>
>  --
>  *Lorenzo Dini*
>
>  CERN - European Organization for Nuclear Research
>  Information Technology Department
>  CH-1211 Geneva 23
>
>  Building 28 - Office 1-007
>  Phone: +41 (0) 22 7674384
>  Fax: +41 (0) 22 7668847
>  E-mail: Lorenzo.Dini@cern.ch
>

Re: Problems with MySqlPersistenceManager: "unable to update item"

Posted by Lorenzo Dini <Lo...@cern.ch>.
Hi

I tried the latest version of MySQL (5.0.51) and it works just fine!

It seems there are problems with MySQL 5.0.27 and jackrabbit-core 1.4.2 
bundle.

Lorenzo

Lorenzo Dini ha scritto:
> Hi,
> 
> thank you for the reply.
> 
> I attache the full DEBUG logs, from the creation of the node 
> 5462ac5e-ff4d-4489-9423-427f1e3d4520 to the exception.
> 
> if you please can have a look at the entries, I do not see any other 
> exception beofore the "unable to update item"...
> 
> The node is created at line 1 of the log.
> 
> Then all the items are added and cached.
> 
> Just before the exception, I see another creation of the same node 
> 5462ac5e-ff4d-4489-9423-427f1e3d4520 (line 320).
> 
> It seems that the node is not found in the DB and it is trying to 
> recreate it??
> 
> Do I have to configure MySQL in a custom way to use the bundles??
> 
> Lorenzo
> 
> 
> 
> Stefan Guggisberg ha scritto:
>> hi lorenzo
>>
>> On Tue, Apr 29, 2008 at 6:32 PM, Lorenzo Dini <Lo...@cern.ch> 
>> wrote:
>>> Hi all,
>>>
>>>  I get an exception while saving nodes with MySqlPersistenceManager 
>>> that it
>>> does not happen if I use DerbyPersistenceManager.
>>>
>>>  The weird thing is that executing the same code several times under the
>>> same conditions (the code stores a long sequence of nodes), the 
>>> exception
>>> not always at the same point but happens randomly on different nodes.
>>>
>>>  Cannot be the DB connection because the DB is on the same machine.
>>>
>>>  This is the stacktrace:
>>>
>>>  RepositoryException:
>>> /etics:volatiles/etics:projects[2]/etics:components[6]: unable to update
>>> item.: a057d13d-c342-4b07-b7d6-ed088b4f6b20
>>>  org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1258)
>>>
>>> org.etics.repository.webservice.persistency.SubmissionManager.storeConfigurations(SubmissionManager.java:590) 
>>>
>>>
>>> org.etics.repository.webservice.persistency.SubmissionManager.storeComponents(SubmissionManager.java:511) 
>>>
>>>
>>> org.etics.repository.webservice.persistency.SubmissionManager.storeProjects(SubmissionManager.java:301) 
>>>
>>>
>>> org.etics.repository.webservice.persistency.SubmissionManager.saveArtefactStructure(SubmissionManager.java:160) 
>>>
>>>
>>> org.etics.repository.webservice.persistency.SubmissionQueue$SubmissionRun.run(SubmissionQueue.java:189) 
>>>
>>>
>>>
>>>  Debugging a bit I saw the real exception: NoSuchItemStateException in
>>> AbstractBundlePersistenceManager.java:559
>>>
>>>  553 if (state.isNode()) {
>>>  554   NodeId nodeId = (NodeId) state.getId();
>>>  555   NodePropBundle bundle = (NodePropBundle) modified.get(nodeId);
>>>  556   if (bundle == null) {
>>>  557     bundle = getBundle(nodeId);
>>>  558     if (bundle == null) {
>>>  559       throw new NoSuchItemStateException(nodeId.toString());
>>>  560     }
>>>  561     modified.put(nodeId, bundle);
>>>  562   }
>>>  563   bundle.update((NodeState) state);
>>>  564 }
>>>
>>>
>>>  This is my configuration:
>>>
>>>  <PersistenceManager
>>> class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager"> 
>>>
>>>         <param name="bundleCacheSize" value="8"/>
>>>         <param name="consistencyCheck" value="true"/>
>>>         <param name="minBlobSize" value="16384"/>
>>>         <param name="driver" value="com.mysql.jdbc.Driver"/>
>>>         <param name="url" value="jdbc:mysql://localhost:3306/bundle"/>
>>>         <param name="user" value="***"/>
>>>         <param name="password" value="***"/>
>>>         <param name="schema" value="mysql"/>
>>>         <param name="errorHandling" value=""/>
>>>         <param name="schemaObjectPrefix" value="${wsp.name}_"/>
>>>  </PersistenceManager>
>>>
>>>  libraries:
>>>         jackrabbit-api-1.4.jar
>>>         jackrabbit-core-1.4.2.jar
>>>         jackrabbit-jcr-commons-1.4.2.jar
>>>         jackrabbit-spi-1.4.jar
>>>         jackrabbit-spi-commons-1.4.jar
>>>         jackrabbit-text-extractors-1.4.jar
>>>         lucene-core-2.2.0.jar
>>>
>>>  MySQL Server Version: 4.1.20
>>>
>>>  I tried with both:
>>>         mysql-connector-java-5.1.6-bin.jar
>>>  and
>>>         mysql-connector-java-3.1.10-bin.jar.
>>>
>>>
>>>  Without changing anything, but using Derby, it works:
>>>
>>>  <PersistenceManager
>>> class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceManager"> 
>>>
>>>         <param name="url" value="jdbc:derby:{wsp.name}/db;create=true"/>
>>>         <param name="schemaObjectPrefix" value="${wsp.name}"/>
>>>  </PersistenceManager>
>>>
>>>
>>>  I have been using the same code with Jackrabbit 1.3 for more than 
>>> one year
>>> now without problems (SimpleDBPersistanceManager on top of the same 
>>> MySQL).
>>>
>>>  What can it be??
>>
>> that's hard to tell without getting some more information. all i can
>> say is that reading
>> an existing  bundle from the db fails for some reason.
>>
>> if you haven't done so already please increase the logging level. you 
>> should
>> find more detailed information regarding the issue causing the failure
>> in the log.
>>
>> could you please provide all relevant log entries?
>>
>> does the failure occur after a certain period of time? if yes it could
>> be related
>> to the auto-reconnect logic. is the db completely left alone or is it 
>> backed up/
>> restarted periodically?
>>
>> last but not least:
>> i know it's difficult but is there a chance that you could put
>> together a simple
>> test case for reproducing the issue?
>>
>> cheers
>> stefan
>>
>>>  Thank you for your help.
>>>
>>>  Lorenzo
>>>
>>>
>>>
>>>  --
>>>  *Lorenzo Dini*
>>>
>>>  CERN - European Organization for Nuclear Research
>>>  Information Technology Department
>>>  CH-1211 Geneva 23
>>>
>>>  Building 28 - Office 1-007
>>>  Phone: +41 (0) 22 7674384
>>>  Fax: +41 (0) 22 7668847
>>>  E-mail: Lorenzo.Dini@cern.ch
>>>
> 

-- 
*Lorenzo Dini*

CERN - European Organization for Nuclear Research
Information Technology Department
CH-1211 Geneva 23

Building 28 - Office 1-007
Phone: +41 (0) 22 7674384
Fax: +41 (0) 22 7668847
E-mail: Lorenzo.Dini@cern.ch