[ 
https://issues.apache.org/jira/browse/OAK-2759?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chetan Mehrotra resolved OAK-2759.
----------------------------------
    Resolution: Fixed

> 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