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.
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? 2) Is it possible to manually fix the data in the database so we are able to bring back Jackrabbit 1.5.6 again? 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 >>>> >>>> >>>> >>>> >>> >> >
