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)

Reply via email to