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 >>>>> >>>>> >>>>> >>>>> >>>> >>> >> >
