Hi Stefan,

the problem was that our customer didn`t tell us that he has installed a new 
version of our product and used the same database. So for me it was also very 
time consuming to find that out... :(
But anyway, can you give me more insights about what to do in the conversion 
tool? I mean which tables do I have to change? How should the data be changed? 
How can I re-compute the definition id`s? 

Thanks in advance,

Sascha


-----Ursprüngliche Nachricht-----
Von: Stefan Guggisberg [mailto:[email protected]] 
Gesendet: Mittwoch, 4. Mai 2011 15:54
An: [email protected]
Betreff: Re: Jackrabbit doesn`t startup anymore

On Wed, May 4, 2011 at 3:41 PM,  <[email protected]> wrote:
> Hi Stefan,
>
> yes you are absolutely right. We switched to a new version of our product and 
> used the old database. In our new product version we include Jackrabbit 1.6.2 
> and in the old product version we include 1.5.6. So Jackrabbit has already 
> migrated the data. So here is not really a problem of Jackrabbit itself.

if you'd provided that information early on you would have saved me a
lot of time... :(

>
> But I have 2 questions regarding the automated migration of Jackrabbit:
>
> 1) Is it possible to disable the automated migration in Jackrabbit? So the 
> migration of the data is always a explicit and manual step?

that's currently not possible.

> 2) Is it possible to manually fix the data in the database so we are able to 
> bring back Jackrabbit 1.5.6 again?

you would have to write your own conversion tool. that tool would need
to re-determine the appropriate definition id's
which is possible but non-trivial.

cheers
stefan

>
> Thanks for your help!
>
> Cheers,
>
> Sascha
>
> -----Ursprüngliche Nachricht-----
> Von: Stefan Guggisberg [mailto:[email protected]]
> Gesendet: Mittwoch, 4. Mai 2011 15:13
> An: [email protected]
> Betreff: Re: Jackrabbit doesn`t startup anymore
>
> On Tue, May 3, 2011 at 9:16 AM,  <[email protected]> wrote:
>> Hi all,
>>
>> I have now a detailed log output of the raised NumnberFormatException:
>>
>> 2011-05-03 08:55:25,329 [main] ERROR BundleDbPersistenceManager - failed to 
>> read bundle: cafebabe-cafe-babe-cafe-babecafebabe: 
>> java.lang.NumberFormatException: For input string: ""
>> java.lang.NumberFormatException: For input string: ""
>>        at 
>> java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
>>        at java.lang.Integer.parseInt(Integer.java:468)
>>        at java.lang.Integer.parseInt(Integer.java:497)
>>        at 
>> org.apache.jackrabbit.core.nodetype.NodeDefId.valueOf(NodeDefId.java:106)
>>        at 
>> org.apache.jackrabbit.core.persistence.bundle.util.BundleBinding.readBundle(BundleBinding.java:105)
>
> here's the problem:
>
>        // definitionId
>        bundle.setNodeDefId(NodeDefId.valueOf(in.readUTF()));
>
> jackrabbit 1.5.6 assumes that the node definition id is part of the
> serialized node bundle data.
> as of jackrabbit 1.6/2.0, definition id's are not persisted anymore,
> see [0] for details.
>
> it seems like you're using jackrabbit 1.5.6 to access data stored with
> jackrabbit 1.6.* or 2.*.
>
> cheers
> stefan
>
>
> [0] https://issues.apache.org/jira/browse/JCR-2170
>
>>        at 
>> org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:1161)
>>        at 
>> org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager.loadBundle(BundleDbPersistenceManager.java:1094)
>>        at 
>> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.getBundle(AbstractBundlePersistenceManager.java:701)
>>        at 
>> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceManager.exists(AbstractBundlePersistenceManager.java:506)
>>        at 
>> org.apache.jackrabbit.core.state.SharedItemStateManager.hasNonVirtualItemState(SharedItemStateManager.java:1343)
>>        at 
>> org.apache.jackrabbit.core.state.SharedItemStateManager.<init>(SharedItemStateManager.java:203)
>>        at 
>> org.apache.jackrabbit.core.RepositoryImpl.createItemStateManager(RepositoryImpl.java:1317)
>>        at 
>> org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.doInitialize(RepositoryImpl.java:1863)
>>        at 
>> org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.initialize(RepositoryImpl.java:1834)
>>        at 
>> org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(RepositoryImpl.java:483)
>>        at 
>> org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:324)
>>        at 
>> org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:621)
>>        at [SKIPPED]
>>
>> Please note that the line numbers in BundleDbPersistenceManager have changed 
>> regarding to the 1.5.6 version of Jackrabbit because I have patched the 
>> class. But I think that doesn`t matter. Any ideas what causes the problem 
>> now? Or how to fix the problem?
>>
>> Thanks in advance,
>>
>> Sascha
>>
>> -----Ursprüngliche Nachricht-----
>> Von: [email protected] [mailto:[email protected]]
>> Gesendet: Montag, 2. Mai 2011 13:24
>> An: [email protected]
>> Betreff: AW: Jackrabbit doesn`t startup anymore
>>
>> Hi,
>>
>>> did you copy the complete repository home directory, i.e. including
>>> the "ns_*.properties" files?
>>
>> Yes I copied the complete repository home directory. But I also tried to 
>> remove the complete repository home directory to force a rebuild of the 
>> index files without success. Still same error. Very strange. Debugging is 
>> currently not possible because the machine is hosted by our customer. But I 
>> will try to patch Jackrabbit`s BundleDbPersistenceManager to get a complete 
>> stack trace. If I have any news I will post it here.
>>
>> But anyway, thank you very much for your help so far.
>>
>> Cheers,
>>
>> Sascha
>>
>> -----Ursprüngliche Nachricht-----
>> Von: Stefan Guggisberg [mailto:[email protected]]
>> Gesendet: Montag, 2. Mai 2011 11:19
>> An: [email protected]
>> Betreff: Re: Jackrabbit doesn`t startup anymore
>>
>> On Mon, May 2, 2011 at 9:18 AM,  <[email protected]> wrote:
>>> Hi,
>>>
>>>> i would need a full stacktrace of the following error:
>>>
>>>> 2011-04-29 07:41:14,278 [main] ERROR BundleDbPersistenceManager - failed
>>>> to read bundle: cafebabe-cafe-babe-cafe-babecafebabe:
>>>> java.lang.NumberFormatException: For input string: ""
>>>
>>> Attached you will find a debug output log of Jackrabbit. Unfortunately, I 
>>> do not see a full stack trace of the NumberFormatException. I think the 
>>> exception must be catched somewhere in Jackrabbit? Any ideas how to get the 
>>> full stack?
>>
>> either debug jackrabbit and set a breakpoint on the line in
>> BundleDbPersistenceManager.java
>> which logs the error, or change that line to print the full stacktrace
>> and rebuild jackrabbit from
>> the soruces.
>>
>> all i can say is that for some reason the deserialization of the root
>> node data fails.
>>
>>>
>>>> what exact steps did you perform to setup the test on the other machine?
>>>
>>> I copied the whole application, including the workspace and the lucene 
>>> index data and the database configuration, to the other machine and started 
>>> up the application.
>>
>> did you copy the complete repository home directory, i.e. including
>> the "ns_*.properties" files?
>>
>>>
>>>> has anything changed on the original machine? environment settings, 
>>>> locales etc?
>>>
>>> I do not see any differences. What should I exactly look for?
>>
>> e.g. environment settings (default encoding, charset, locale), jvm
>> runtime version, etc.
>>
>>>
>>>> what os? deployment details?
>>>
>>> OS is a Unix operating system. Jackrabbit is embedded in our application 
>>> which runs in an OSGi container. Jackrabbit is connected to a Oracle 
>>> database which is hosted on another machine. Java 5 is installed on the 
>>> machine. More details are printed in the attached log file.
>>>
>>> Any ideas how to get rid of the problem are appreciated because I really 
>>> need to get it working again on the orig. machine.
>>
>> you'll probably have to debug jackrabbit in order to see why the
>> deserialization of the root node bundle fails.
>>
>> cheers
>> stefan
>>
>>>
>>> Thanks in advance,
>>>
>>> Sascha
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: Stefan Guggisberg [mailto:[email protected]]
>>> Gesendet: Freitag, 29. April 2011 15:22
>>> An: [email protected]
>>> Betreff: Re: Jackrabbit doesn`t startup anymore
>>>
>>> On Fri, Apr 29, 2011 at 11:54 AM,  <[email protected]> wrote:
>>>> Hi,
>>>>
>>>> thanks for your fast reply. We didn`t try a db backup yet but what we have 
>>>> tried is to install Jackrabbit on another machine with exactly the same 
>>>> configuration (also same db in use). That Jackrabbit instance works 
>>>> without problems. We can start and stop it and we can browse the nodes.
>>>
>>> that's good news :)
>>>
>>>> So it seems that it doesn`t depend on the database...
>>>
>>> agreed
>>>
>>>> Any other ideas?
>>>
>>> what exact steps did you perform to setup the test on the other machine?
>>> has anything changed on the original machine? environment settings, locales 
>>> etc?
>>> what os? deployment details?
>>>
>>> obviously there's a problem reading the root node (cafebabe...) on the
>>> original machine.
>>>
>>> i would need a full stacktrace of the following error:
>>>
>>> 2011-04-29 07:41:14,278 [main] ERROR BundleDbPersistenceManager - failed
>>> to read bundle: cafebabe-cafe-babe-cafe-babecafebabe:
>>> java.lang.NumberFormatException: For input string: ""
>>>
>>> it might be that the internal namespace index files (ns_*.properties)
>>> got corrupted.
>>>
>>> cheers
>>> stefan
>>>
>>>>
>>>> Thanks,
>>>>
>>>> Sascha
>>>>
>>>>
>>>>
>>>> -----Ursprüngliche Nachricht-----
>>>> Von: Stefan Guggisberg [mailto:[email protected]]
>>>> Gesendet: Freitag, 29. April 2011 10:53
>>>> An: [email protected]
>>>> Betreff: Re: Jackrabbit doesn`t startup anymore
>>>>
>>>> On Fri, Apr 29, 2011 at 9:58 AM,  <[email protected]> wrote:
>>>>> Hi all,
>>>>>
>>>>>
>>>>>
>>>>> we have running a Jackrabbit 1.5.6 instance for months now without any
>>>>> problems. But since yesterday we were not able anymore to list nodes
>>>>> anymore and so on. We just got back empty results so that it seems that
>>>>> no data was ever persisted. After that we shutdown the Jackrabbit
>>>>> instance and now we are not able to start it again. The following
>>>>> exception occurs when starting up:
>>>>>
>>>>>
>>>>>
>>>>> 2011-04-29 07:41:14,278 [main] ERROR BundleDbPersistenceManager - failed
>>>>> to read bundle: cafebabe-cafe-babe-cafe-babecafebabe:
>>>>> java.lang.NumberFormatException: For input string: ""
>>>>>
>>>>> 2011-04-29 07:41:14,278 [main] ERROR BundleDbPersistenceManager - failed
>>>>> to read bundle: cafebabe-cafe-babe-cafe-babecafebabe:
>>>>> java.lang.NumberFormatException: For input string: ""
>>>>>
>>>>> 2011-04-29 07:41:14,409 [main] ERROR ConnectionRecoveryManager - could
>>>>> not execute statement, reason: ORA-00001: unique constraint
>>>>> (UJXMTSRADMIN.DEFAULT_BUNDLE_IDX) violated
>>>>
>>>> seems like your oracle db got corrupted somehow. did you perform sanity
>>>> checks on your oracle instance? did you try with a db backup?
>>>>
>>>> cheers
>>>> stefan
>>>>
>>>>>
>>>>> , state/code: 23000/1
>>>>>
>>>>> 2011-04-29 07:41:14,409 [main] ERROR ConnectionRecoveryManager - could
>>>>> not execute statement, reason: ORA-00001: unique constraint
>>>>> (UJXMTSRADMIN.DEFAULT_BUNDLE_IDX) violated
>>>>>
>>>>> , state/code: 23000/1
>>>>>
>>>>> 2011-04-29 07:41:14,417 [main] ERROR BundleDbPersistenceManager - failed
>>>>> to write bundle: deadbeef-cafe-babe-cafe-babecafebabe
>>>>>
>>>>> java.sql.SQLException: ORA-00001: unique constraint
>>>>> (UJXMTSRADMIN.DEFAULT_BUNDLE_IDX) violated
>>>>>
>>>>>
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:12
>>>>> 5)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:305)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:272)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:626)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.jav
>>>>> a:182)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.T4CPreparedStatement.execute_for_rows(T4CPreparedStat
>>>>> ement.java:630)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.
>>>>> java:1081)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePrepare
>>>>> dStatement.java:2905)
>>>>>
>>>>>                at
>>>>> oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStateme
>>>>> nt.java:2996)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
>>>>> ager.executeStmtInternal(ConnectionRecoveryManager.java:371)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
>>>>> ager.executeStmtInternal(ConnectionRecoveryManager.java:298)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
>>>>> ager.executeStmt(ConnectionRecoveryManager.java:261)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.util.ConnectionRecoveryMan
>>>>> ager.executeStmt(ConnectionRecoveryManager.java:239)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
>>>>> .storeBundle(BundleDbPersistenceManager.java:1198)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceM
>>>>> anager.putBundle(AbstractBundlePersistenceManager.java:732)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceM
>>>>> anager.storeInternal(AbstractBundlePersistenceManager.java:672)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.AbstractBundlePersistenceM
>>>>> anager.store(AbstractBundlePersistenceManager.java:536)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.persistence.bundle.BundleDbPersistenceManager
>>>>> .store(BundleDbPersistenceManager.java:524)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.state.SharedItemStateManager.createRootNodeSt
>>>>> ate(SharedItemStateManager.java:1303)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.state.SharedItemStateManager.<init>(SharedIte
>>>>> mStateManager.java:204)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.RepositoryImpl.createItemStateManager(Reposit
>>>>> oryImpl.java:1317)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.doInitialize(Rep
>>>>> ositoryImpl.java:1863)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.initialize(Repos
>>>>> itoryImpl.java:1834)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(Reposito
>>>>> ryImpl.java:483)
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:324
>>>>> )
>>>>>
>>>>>                at
>>>>> org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:621
>>>>> )
>>>>>
>>>>>
>>>>>
>>>>> I think the SQL exception is only raised because Jackrabbit is not able
>>>>> to read the bundle "cafebabe-cafe-babe-cafe-babecafebabe". Do you have
>>>>> any ideas how to fix the problem or what could have caused the problem?
>>>>>
>>>>> Any suggestions would be helpful.
>>>>>
>>>>>
>>>>>
>>>>> Thanks in advance.
>>>>>
>>>>>
>>>>>
>>>>> Sascha
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>

Reply via email to