[jira] [Updated] (OAK-6794) oak-upgrade fails to copy nt:file node if it was previously moved

2017-10-06 Thread Yegor Kozlov (JIRA)

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

Yegor Kozlov updated OAK-6794:
--
Attachment: UniquenessConstraintViolatedTest.patch

failing unit test

> oak-upgrade fails to copy nt:file node if it was previously moved
> -
>
> Key: OAK-6794
> URL: https://issues.apache.org/jira/browse/OAK-6794
> Project: Jackrabbit Oak
>  Issue Type: Bug
>  Components: upgrade
>Reporter: Yegor Kozlov
> Attachments: UniquenessConstraintViolatedTest.patch
>
>
> I'm using crx2oak to do blue-green deployments. Delta migration on certain 
> content paths is consistently failing with the folowing error:
> {code}
> 06.10.2017 12:53:02.355 ERROR  c.a.g.c.e.MigrationEngine: The internal error 
> occurred during migration. The migration process has been aborted and it is 
> not complete!
> java.lang.RuntimeException: javax.jcr.RepositoryException: Failed to copy 
> content
> at com.google.common.io.Closer.rethrow(Closer.java:149)
> at 
> com.adobe.granite.crx2oak.engine.crx.CrxUpgradeEngine.migrateCrx2(CrxUpgradeEngine.java:102)
> at 
> com.adobe.granite.crx2oak.engine.MigrationEngine$1.doMigration(MigrationEngine.java:53)
> at 
> com.adobe.granite.crx2oak.engine.MigrationEngine.process(MigrationEngine.java:92)
> at com.adobe.granite.crx2oak.pipeline.Pipeline.run(Pipeline.java:103)
> at com.adobe.granite.crx2oak.CRX2Oak.run(CRX2Oak.java:66)
> at com.adobe.granite.crx2oak.CRX2Oak.main(CRX2Oak.java:51)
> Caused by: javax.jcr.RepositoryException: Failed to copy content
> at 
> org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.copy(RepositoryUpgrade.java:561)
> at 
> com.adobe.granite.crx2oak.engine.crx.CrxUpgradeEngine.upgradeFromCrx2(CrxUpgradeEngine.java:80)
> at 
> com.adobe.granite.crx2oak.engine.crx.CrxUpgradeEngine.migrateCrx2(CrxUpgradeEngine.java:100)
> ... 5 common frames omitted
> Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: 
> OakConstraint0030: Uniqueness constraint violated at path [/] for one of the 
> property in [jcr:uuid] having value dce2a7ce-f0b7-45b0-a0a9-f46c1d2bddd4
> at 
> org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.checkUniquenessConstraints(PropertyIndexEditor.java:319)
> at 
> org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.updateIndex(PropertyIndexEditor.java:299)
> at 
> org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.leave(PropertyIndexEditor.java:239)
> at 
> org.apache.jackrabbit.oak.spi.commit.ProgressNotificationEditor.leave(ProgressNotificationEditor.java:76)
> at 
> org.apache.jackrabbit.oak.spi.commit.VisibleEditor.leave(VisibleEditor.java:63)
> at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:56)
> at 
> org.apache.jackrabbit.oak.plugins.index.IndexUpdate.enter(IndexUpdate.java:169)
> at 
> org.apache.jackrabbit.oak.spi.commit.CompositeEditor.enter(CompositeEditor.java:66)
> at 
> org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:49)
> at 
> org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:55)
> at 
> org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade$LoggingCompositeHook.processCommit(RepositoryUpgrade.java:1049)
> at 
> org.apache.jackrabbit.oak.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:604)
> at 
> org.apache.jackrabbit.oak.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:634)
> at 
> org.apache.jackrabbit.oak.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:690)
> at 
> org.apache.jackrabbit.oak.segment.SegmentNodeStore.merge(SegmentNodeStore.java:334)
> at 
> org.apache.jackrabbit.oak.spi.state.ProxyNodeStore.merge(ProxyNodeStore.java:43)
> at 
> org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.copy(RepositoryUpgrade.java:557)
> ... 7 common frames omitted
> {code}
> It appears to happen when an nt:file node was moved in the source repository 
> and crx2oak is trying to copy the moved node to the destination. I was able 
> to isolate it in a unit test, see attached. 
> The steps to reproduce are:
> # initial migration copies the nt:file node to the destination
> # the nt:file node is moved in the source repository
> # oak-upgrade copies the moved nt:file to the target with --merge-paths 
> option . 
>  



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)


[jira] [Created] (OAK-6794) oak-upgrade fails to copy nt:file node if it was previously moved

2017-10-06 Thread Yegor Kozlov (JIRA)
Yegor Kozlov created OAK-6794:
-

 Summary: oak-upgrade fails to copy nt:file node if it was 
previously moved
 Key: OAK-6794
 URL: https://issues.apache.org/jira/browse/OAK-6794
 Project: Jackrabbit Oak
  Issue Type: Bug
  Components: upgrade
Reporter: Yegor Kozlov


I'm using crx2oak to do blue-green deployments. Delta migration on certain 
content paths is consistently failing with the folowing error:

{code}
06.10.2017 12:53:02.355 ERROR  c.a.g.c.e.MigrationEngine: The internal error 
occurred during migration. The migration process has been aborted and it is not 
complete!
java.lang.RuntimeException: javax.jcr.RepositoryException: Failed to copy 
content
at com.google.common.io.Closer.rethrow(Closer.java:149)
at 
com.adobe.granite.crx2oak.engine.crx.CrxUpgradeEngine.migrateCrx2(CrxUpgradeEngine.java:102)
at 
com.adobe.granite.crx2oak.engine.MigrationEngine$1.doMigration(MigrationEngine.java:53)
at 
com.adobe.granite.crx2oak.engine.MigrationEngine.process(MigrationEngine.java:92)
at com.adobe.granite.crx2oak.pipeline.Pipeline.run(Pipeline.java:103)
at com.adobe.granite.crx2oak.CRX2Oak.run(CRX2Oak.java:66)
at com.adobe.granite.crx2oak.CRX2Oak.main(CRX2Oak.java:51)
Caused by: javax.jcr.RepositoryException: Failed to copy content
at 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.copy(RepositoryUpgrade.java:561)
at 
com.adobe.granite.crx2oak.engine.crx.CrxUpgradeEngine.upgradeFromCrx2(CrxUpgradeEngine.java:80)
at 
com.adobe.granite.crx2oak.engine.crx.CrxUpgradeEngine.migrateCrx2(CrxUpgradeEngine.java:100)
... 5 common frames omitted
Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: 
OakConstraint0030: Uniqueness constraint violated at path [/] for one of the 
property in [jcr:uuid] having value dce2a7ce-f0b7-45b0-a0a9-f46c1d2bddd4
at 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.checkUniquenessConstraints(PropertyIndexEditor.java:319)
at 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.updateIndex(PropertyIndexEditor.java:299)
at 
org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditor.leave(PropertyIndexEditor.java:239)
at 
org.apache.jackrabbit.oak.spi.commit.ProgressNotificationEditor.leave(ProgressNotificationEditor.java:76)
at 
org.apache.jackrabbit.oak.spi.commit.VisibleEditor.leave(VisibleEditor.java:63)
at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:56)
at 
org.apache.jackrabbit.oak.plugins.index.IndexUpdate.enter(IndexUpdate.java:169)
at 
org.apache.jackrabbit.oak.spi.commit.CompositeEditor.enter(CompositeEditor.java:66)
at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:49)
at 
org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:55)
at 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade$LoggingCompositeHook.processCommit(RepositoryUpgrade.java:1049)
at 
org.apache.jackrabbit.oak.segment.SegmentNodeStore$Commit.prepare(SegmentNodeStore.java:604)
at 
org.apache.jackrabbit.oak.segment.SegmentNodeStore$Commit.optimisticMerge(SegmentNodeStore.java:634)
at 
org.apache.jackrabbit.oak.segment.SegmentNodeStore$Commit.execute(SegmentNodeStore.java:690)
at 
org.apache.jackrabbit.oak.segment.SegmentNodeStore.merge(SegmentNodeStore.java:334)
at 
org.apache.jackrabbit.oak.spi.state.ProxyNodeStore.merge(ProxyNodeStore.java:43)
at 
org.apache.jackrabbit.oak.upgrade.RepositoryUpgrade.copy(RepositoryUpgrade.java:557)
... 7 common frames omitted
{code}

It appears to happen when an nt:file node was moved in the source repository 
and crx2oak is trying to copy the moved node to the destination. I was able to 
isolate it in a unit test, see attached. 

The steps to reproduce are:

# initial migration copies the nt:file node to the destination
# the nt:file node is moved in the source repository
# oak-upgrade copies the moved nt:file to the target with --merge-paths option 
. 

 



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)