You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Chetan Mehrotra (JIRA)" <ji...@apache.org> on 2015/04/14 06:01:12 UTC

[jira] [Created] (OAK-2759) Empty commit causes deserialization issue in LocalDiffCache leading to cache corruption

Chetan Mehrotra created OAK-2759:
------------------------------------

             Summary: Empty commit causes deserialization issue in LocalDiffCache leading to cache corruption
                 Key: OAK-2759
                 URL: https://issues.apache.org/jira/browse/OAK-2759
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: oak-core
    Affects Versions: 1.2
            Reporter: Chetan Mehrotra
            Assignee: Chetan Mehrotra
             Fix For: 1.0.13, 1.3.0, 1.2.1


At time following logs warning is seen. This would come due to the currently handling of empty ConsolidatedDiff. It leads to an empty string entry in persisted cache during serialization which is not handled properly during deserialization. Post this warning CONSOLIDATED_DIFF map is reopened.

After that lots of warning logs are seen related to error occurring while fetching from persistent cache. 

[~tmueller] Mentioned that its very important that serialization and deserialization code should work properly and not throw exception otherwise it would lead to issues with persistent cache and it would have to be opened fresh. 

{noformat}
10.04.2015 00:51:35.893 *WARN* [pool-6-thread-5] org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap Re-opening map CONSOLIDATED_DIFF
java.lang.IllegalArgumentException: Chunk [] is not a valid entry
	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:120)
	at com.google.common.base.Splitter$MapSplitter.split(Splitter.java:508)
	at org.apache.jackrabbit.oak.plugins.document.LocalDiffCache$ConsolidatedDiff.fromString(LocalDiffCache.java:120)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheType$4.valueFromString(CacheType.java:129)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.ValueDataType.read(ValueDataType.java:61)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.ValueDataType.read(ValueDataType.java:74)
	at org.h2.mvstore.Page.read(Page.java:702)
	at org.h2.mvstore.Page.read(Page.java:194)
	at org.h2.mvstore.MVStore.readPage(MVStore.java:1830)
	at org.h2.mvstore.MVMap.readPage(MVMap.java:736)
	at org.h2.mvstore.Page.getChildPage(Page.java:216)
	at org.h2.mvstore.MVMap.put(MVMap.java:195)
	at org.h2.mvstore.MVMap.put(MVMap.java:206)
	at org.h2.mvstore.MVMap.put(MVMap.java:121)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.CacheMap.put(CacheMap.java:74)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.MultiGenerationMap.put(MultiGenerationMap.java:47)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.write(NodeCache.java:89)
	at org.apache.jackrabbit.oak.plugins.document.persistentCache.NodeCache.put(NodeCache.java:130)
	at org.apache.jackrabbit.oak.plugins.document.LocalDiffCache$1.done(LocalDiffCache.java:92)
	at org.apache.jackrabbit.oak.plugins.document.Commit.applyToCache(Commit.java:597)
	at org.apache.jackrabbit.oak.plugins.document.CommitQueue.afterTrunkCommit(CommitQueue.java:127)
	at org.apache.jackrabbit.oak.plugins.document.CommitQueue.done(CommitQueue.java:83)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.done(DocumentNodeStore.java:596)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:315)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.persist(DocumentNodeStoreBranch.java:281)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.access$200(DocumentNodeStoreBranch.java:52)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch$InMemory.merge(DocumentNodeStoreBranch.java:520)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge0(DocumentNodeStoreBranch.java:234)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:174)
	at org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:159)
	at org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1416)
	at org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:245)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.commit(SessionDelegate.java:313)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:459)
	at org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.perform(SessionImpl.java:429)
	at org.apache.jackrabbit.oak.jcr.session.SessionImpl$8.perform(SessionImpl.java:426)
	at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:216)
	at org.apache.jackrabbit.oak.jcr.session.SessionImpl.perform(SessionImpl.java:139)
	at org.apache.jackrabbit.oak.jcr.session.SessionImpl.save(SessionImpl.java:426)
	at sun.reflect.GeneratedMethodAccessor23.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at org.apache.sling.jcr.base.SessionProxyHandler$SessionProxyInvocationHandler.invoke(SessionProxyHandler.java:113)
	at com.sun.proxy.$Proxy8.save(Unknown Source)
	at org.apache.sling.jcr.resource.internal.helper.jcr.JcrResourceProvider.commit(JcrResourceProvider.java:636)
	at org.apache.sling.resourceresolver.impl.helper.ResourceResolverContext.commit(ResourceResolverContext.java:181)
	at org.apache.sling.resourceresolver.impl.ResourceResolverImpl.commit(ResourceResolverImpl.java:1147)
	at org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler.issueClusterLocalHeartbeat(HeartbeatHandler.java:389)
	at org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler.issueHeartbeat(HeartbeatHandler.java:262)
	at org.apache.sling.discovery.impl.common.heartbeat.HeartbeatHandler.run(HeartbeatHandler.java:213)
	at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:105)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	at java.lang.Thread.run(Thread.java:745)
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)