Hi,
We have a large repository containing lots of uploaded files (about 20 GB and
33K files). We recently started noticing following statements in logs
2012-08-21 10:59:56,285 ERROR [pool-2-thread-30]
BundleDbPersistenceManager.loadBundle(1033) | failed to read bundle:
aa00a98b-ab04-40f0-b7c4-05f1af033f9c: java.sql.SQLException: Failed to parse
bundle aa00a98b-ab04-40f0-b7c4-05f1af033f9c
2012-08-21 11:14:19,107 ERROR [pool-2-thread-21]
BundleDbPersistenceManager.loadBundle(1033) | failed to read bundle:
4146fc44-52c6-45a0-9b6a-6b6778bd85da: java.sql.SQLException: Failed to parse
bundle 4146fc44-52c6-45a0-9b6a-6b6778bd85da
With higher log level, Following stack trace is printed. I enabled consistency
check, but that also doesn't run because code fails to load the node. I can
retrive the main node fine but when I try to access "jcr:content", error is
thrown. We have a large number of nodes sitting in this state.
1. Is this state repairable.
2. All these nodes were versioned, is it possible to retrieve the file content
from versioned node?
JackRabbit Version:2.2.4
Persistance
Manager:org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager
(we also tried
with org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager)
It precisely fails at
BundleDbPersistenceManager.DbBlobStore(1311)
rs = conHelper.exec(blobSelectSQL, new Object[]{blobId}, false, 0);
if (!rs.next()) {
throw new Exception("no such BLOB: " + blobId);
}
ERROR 22-08 09:31:52,909 - Unable to parse bundle
0001be06-f6b5-40ca-be5e-0e88d8c327a3
java.sql.SQLException: Failed to parse bundle
0001be06-f6b5-40ca-be5e-0e88d8c327a3
at
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.readBundle(BundleDbPersistenceManager.java:1064)
at
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.checkConsistency(BundleDbPersistenceManager.java:805)
at
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.init(BundleDbPersistenceManager.java:546)
at
org.apache.jackrabbit.core.persistence.pool.MySqlPersistenceManager.init(MySqlPersistenceManager.java:51)
at
org.apache.jackrabbit.core.RepositoryImpl.createPersistenceManager(RepositoryImpl.java:1353)
at org.apache.jackrabbit.core.RepositoryImpl.access$300(RepositoryImpl.java:124)
at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.doInitialize(RepositoryImpl.java:2015)
at
org.apache.jackrabbit.core.RepositoryImpl$WorkspaceInfo.initialize(RepositoryImpl.java:1998)
at
org.apache.jackrabbit.core.RepositoryImpl.initStartupWorkspaces(RepositoryImpl.java:533)
at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:342)
at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:605)
at
org.apache.jackrabbit.core.TransientRepository$1.getRepository(TransientRepository.java:180)
at
org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:280)
at
org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:376)
at
org.apache.jackrabbit.commons.AbstractRepository.login(AbstractRepository.java:123)
at com.thed.util.RepositoryPlugin.getSession(RepositoryPlugin.java:78)
at com.thed.util.RepositoryPlugin.makeObject(RepositoryPlugin.java:100)
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1147)
at
com.thed.repository.JcrSessionInterceptor.invoke(JcrSessionInterceptor.java:21)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
at $Proxy14.getCurrentRepositoryObject(Unknown Source)
at
com.thed.installer.jdbc.impl.AttachmentMigrationManagerImpl.copyAttachment(AttachmentMigrationManagerImpl.java:192)
at
com.thed.installer.jdbc.impl.AttachmentMigrationManagerImpl.access$0(AttachmentMigrationManagerImpl.java:185)
at
com.thed.installer.jdbc.impl.AttachmentMigrationManagerImpl$1.call(AttachmentMigrationManagerImpl.java:260)
at
com.thed.installer.jdbc.impl.AttachmentMigrationManagerImpl$1.call(AttachmentMigrationManagerImpl.java:1)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:680)
Caused by: java.io.IOException: Unable to create property value:
java.lang.Exception: no such BLOB:
0001be06-f6b5-40ca-be5e-0e88d8c327a3.1570322.1.0
at
org.apache.jackrabbit.core.persistence.util.BundleReader.readPropertyEntry(BundleReader.java:358)
at
org.apache.jackrabbit.core.persistence.util.BundleReader.readBundleNew(BundleReader.java:183)
at
org.apache.jackrabbit.core.persistence.util.BundleReader.readBundle(BundleReader.java:140)
at
org.apache.jackrabbit.core.persistence.util.BundleBinding.readBundle(BundleBinding.java:152)
at
org.apache.jackrabbit.core.persistence.pool.BundleDbPersistenceManager.readBundle(BundleDbPersistenceManager.java:1059)
... 30 more
-shailesh