[ 
https://issues.apache.org/jira/browse/OAK-5651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15867476#comment-15867476
 ] 

Chetan Mehrotra commented on OAK-5651:
--------------------------------------

bq.  if we disable the observation support on the destination DocumentMK 
repository, won't this break something?

The BundlingConfigHandler just does a simple diff and I believe any other 
observer would also be doing that and would thus break. So unless we make that 
work we can disable the observation support. 

bq.  If so, maybe we can disable the bundling support for the time of migration?

I would like to have bundling enabled for migration. If disabling observation 
support comepletely is not possible we can modify the bundling logic to disable 
observer part but still have bundling enabled

> java.lang.IllegalStateException logged when migrating Segment to Document
> -------------------------------------------------------------------------
>
>                 Key: OAK-5651
>                 URL: https://issues.apache.org/jira/browse/OAK-5651
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>          Components: upgrade
>    Affects Versions: 1.5.13
>            Reporter: Tomek Rękawek
>            Assignee: Tomek Rękawek
>             Fix For: 1.7.0, 1.8
>
>
> After migrating the SegmentMK to DocumentMK following exception is logged:
> {noformat}
> 12:38:58.816 INFO  [main] RepositorySidegrade.java:310      Copying 
> checkpoints is not supported for this combination of node stores
> 12:38:58.835 ERROR [main] BackgroundObserver.java:176       Uncaught 
> exception in 
> org.apache.jackrabbit.oak.plugins.document.bundlor.BundlingConfigHandler@3c782d8e
> com.google.common.util.concurrent.UncheckedExecutionException: 
> java.lang.IllegalStateException: Missing external change for branch revision:
>         at 
> com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2199) 
> ~[guava-15.0.jar:na]
>         at com.google.common.cache.LocalCache.get(LocalCache.java:3932) 
> ~[guava-15.0.jar:na]
>         at 
> com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4721) 
> ~[guava-15.0.jar:na]
>         at 
> org.apache.jackrabbit.oak.plugins.document.MemoryDiffCache.getChanges(MemoryDiffCache.java:83)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.TieredDiffCache.getChanges(TieredDiffCache.java:50)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.compare(DocumentNodeStore.java:1616)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.AbstractDocumentNodeState.compareAgainstBaseState(AbstractDocumentNodeState.java:114)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52) 
> ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.bundlor.BundlingConfigHandler.contentChanged(BundlingConfigHandler.java:70)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:134)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1$1.call(BackgroundObserver.java:128)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
> [na:1.8.0_73]
>         at 
> com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:297)
>  [guava-15.0.jar:na]
>         at 
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver$1.run(BackgroundObserver.java:148)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.commons.concurrent.NotifyingFutureTask.run(NotifyingFutureTask.java:73)
>  [oak-commons-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.commons.concurrent.NotifyingFutureTask.onComplete(NotifyingFutureTask.java:62)
>  [oak-commons-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.spi.commit.BackgroundObserver.contentChanged(BackgroundObserver.java:312)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.spi.commit.CompositeObserver.contentChanged(CompositeObserver.java:52)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.spi.commit.ChangeDispatcher.contentChanged(ChangeDispatcher.java:80)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$4.headOfQueue(DocumentNodeStore.java:837)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.CommitQueue.waitUntilHeadOfQueue(CommitQueue.java:237)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.CommitQueue.done(CommitQueue.java:92)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.done(DocumentNodeStore.java:816)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1585)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch$Persisted$1.call(DocumentNodeStoreBranch.java:606)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch$Persisted$1.call(DocumentNodeStoreBranch.java:600)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.withCurrentBranch(DocumentNodeStoreBranch.java:313)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.access$600(DocumentNodeStoreBranch.java:58)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch$Persisted.merge(DocumentNodeStoreBranch.java:600)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge0(DocumentNodeStoreBranch.java:185)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:119)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:167)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1694)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copyState(RepositorySidegrade.java:344)
>  [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copy(RepositorySidegrade.java:279)
>  [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.RepositorySidegrade.copy(RepositorySidegrade.java:242)
>  [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.sidegrade(OakUpgrade.java:92)
>  [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:78) 
> [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.migrate(OakUpgrade.java:67) 
> [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.cli.OakUpgrade.main(OakUpgrade.java:48) 
> [classes/:na]
>         at 
> org.apache.jackrabbit.oak.upgrade.cli.AbstractOak2OakTest.prepare(AbstractOak2OakTest.java:109)
>  [test-classes/:na]
> ...
> Caused by: java.lang.IllegalStateException: Missing external change for 
> branch revision:
>         at 
> org.apache.jackrabbit.oak.plugins.document.JournalEntry$3$1.computeNext(JournalEntry.java:490)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.JournalEntry$3$1.computeNext(JournalEntry.java:478)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>  ~[guava-15.0.jar:na]
>         at 
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138) 
> ~[guava-15.0.jar:na]
>         at 
> org.apache.jackrabbit.oak.plugins.document.JournalEntry.addTo(JournalEntry.java:453)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.JournalDiffLoader.readTrunkChanges(JournalDiffLoader.java:168)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.JournalDiffLoader.call(JournalDiffLoader.java:88)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.diffImpl(DocumentNodeStore.java:2427)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.access$700(DocumentNodeStore.java:136)
>  [oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore$8.call(DocumentNodeStore.java:1621)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.MemoryDiffCache$1.call(MemoryDiffCache.java:89)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> org.apache.jackrabbit.oak.plugins.document.MemoryDiffCache$1.call(MemoryDiffCache.java:83)
>  ~[oak-core-1.8-SNAPSHOT.jar:1.8-SNAPSHOT]
>         at 
> com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4724)
>  ~[guava-15.0.jar:na]
>         at 
> com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3522)
>  ~[guava-15.0.jar:na]
>         at 
> com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2315) 
> ~[guava-15.0.jar:na]
>         at 
> com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2278)
>  ~[guava-15.0.jar:na]
>         at 
> com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2193) 
> ~[guava-15.0.jar:na]
>         ... 71 common frames omitted
> 12:38:58.836 INFO  [main] DocumentNodeStore.java:663        Starting disposal 
> of DocumentNodeStore with clusterNodeId: 1 (id: 1, startTime: 1487072336420, 
> machineId: mac:38c98646844e, instanceId: 
> /Users/rekawek/granite/jackrabbit-oak/oak-upgrade, pid: 76780, uuid: 
> 4089c6f3-c563-4734-8816-4ee7fb712ce5, readWriteMode: null, state: NONE, 
> revLock: NONE, oakVersion: 1.8-SNAPSHOT)
> {noformat}
> It can be reproduced with the oak-upgrade test:
> {noformat}
> mvn -f oak-upgrade/pom.xml clean test -Dtest=SegmentToMongoTest && cat 
> oak-upgrade/target/unit-tests.log
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to