You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@jackrabbit.apache.org by shailesh mangal <sh...@getzephyr.com> on 2012/08/22 22:27:22 UTC

java.sql.SQLException: Failed to parse bundle

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

Re: java.sql.SQLException: Failed to parse bundle

Posted by Raj <db...@gmail.com>.
Hi All,

Any pointers why bundle can't be read?

regards,
Rajeev

On Thu, Aug 23, 2012 at 1:57 AM, shailesh mangal <
shailesh.mangal@getzephyr.com> wrote:

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

Re: java.sql.SQLException: Failed to parse bundle

Posted by Alexander Klimetschek <ak...@adobe.com>.
> Caused by: java.io.IOException: Unable to create property value: java.lang.Exception: no such BLOB: 0001be06-f6b5-40ca-be5e-0e88d8c327a3.1570322.1.0

AFAICS, this tells that it cannot find a certain blob in the sql database for a property (probably a binary) that is referenced in some node. It looks that the consistency check seems out of luck here...

Cheers,
Alex