Description of problem: The jcr2vfs migration tool is broken. It can't migrate certain asset types, because of classpath order issues. There are both Drools 5.x and Drools 6.x on the CP at the same time, which causes serious issues during runtime. See for example following exception thrown by the tool: ********************************************************************** java.lang.NoSuchMethodError: org.drools.core.util.IoUtils.readBytesFromInputStream(Ljava/io/InputStream;)[B at org.drools.compiler.kie.builder.impl.KieFileSystemImpl.write(KieFileSystemImpl.java:47) at org.guvnor.common.services.builder.Builder.visitPaths(Builder.java:551) at org.guvnor.common.services.builder.Builder.<init>(Builder.java:118) at org.guvnor.common.services.builder.LRUBuilderCache.assertBuilder(LRUBuilderCache.java:88) at org.guvnor.common.services.builder.LRUBuilderCache$Proxy$_$$_WeldClientProxy.assertBuilder(LRUBuilderCache$Proxy$_$$_WeldClientProxy.java) at org.kie.workbench.common.screens.datamodeller.backend.server.DataModelerServiceImpl.getProjectClassLoader(DataModelerServiceImpl.java:475) at org.kie.workbench.common.screens.datamodeller.backend.server.DataModelerServiceImpl.generateModel(DataModelerServiceImpl.java:281) at org.kie.workbench.common.screens.datamodeller.backend.server.DataModelerServiceImpl.saveModel(DataModelerServiceImpl.java:238) at org.kie.workbench.common.screens.datamodeller.backend.server.DataModelerServiceImpl.saveModel(DataModelerServiceImpl.java:217) at org.kie.workbench.common.screens.datamodeller.backend.server.DataModelerServiceImpl$Proxy$_$$_WeldClientProxy.saveModel(DataModelerServiceImpl$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.migrater.asset.FactModelsMigrater.migrate(FactModelsMigrater.java:120) at org.drools.workbench.jcr2vfsmigration.migrater.asset.FactModelsMigrater$Proxy$_$$_WeldClientProxy.migrate(FactModelsMigrater$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.migrater.AssetMigrater.migrate(AssetMigrater.java:190) at org.drools.workbench.jcr2vfsmigration.migrater.AssetMigrater.migrateAll(AssetMigrater.java:158) at org.drools.workbench.jcr2vfsmigration.migrater.AssetMigrater$Proxy$_$$_WeldClientProxy.migrateAll(AssetMigrater$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrater.migrateAll(Jcr2VfsMigrater.java:91)Migration ended with warnings. Written into outputVfsRepository ({/mnt/hudson_workspace/workspace/brms-6.1-jcr2vfs-migration-single/jcr2vfs-migration-tests-resources/mortgages-with-custom-updates-repo/migrated-vfs-repo}). at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrater$Proxy$_$$_WeldClientProxy.migrateAll(Jcr2VfsMigrater$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrationApp.migrate(Jcr2VfsMigrationApp.java:64) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrationApp.run(Jcr2VfsMigrationApp.java:52) ********************************************************************** java.lang.ClassCastException: org.drools.core.base.accumulators.BigDecimalSumAccumulateFunction cannot be cast to org.drools.runtime.rule.AccumulateFunction at org.drools.compiler.PackageBuilderConfiguration.loadAccumulateFunction(PackageBuilderConfiguration.java:530) at org.drools.compiler.PackageBuilderConfiguration.buildAccumulateFunctionsMap(PackageBuilderConfiguration.java:479) at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:194) at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:165) at org.drools.guvnor.server.builder.BRMSPackageBuilder.getPackageBuilderConfiguration(BRMSPackageBuilder.java:134) at org.drools.guvnor.server.builder.BRMSPackageBuilder.<init>(BRMSPackageBuilder.java:67) at org.drools.workbench.jcr2vfsmigration.migrater.asset.GuidedEditorMigrater.migrate(GuidedEditorMigrater.java:92) at org.drools.workbench.jcr2vfsmigration.migrater.asset.GuidedEditorMigrater$Proxy$_$$_WeldClientProxy.migrate(GuidedEditorMigrater$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.migrater.AssetMigrater.migrate(AssetMigrater.java:192) at org.drools.workbench.jcr2vfsmigration.migrater.AssetMigrater.migrateAll(AssetMigrater.java:158) at org.drools.workbench.jcr2vfsmigration.migrater.AssetMigrater$Proxy$_$$_WeldClientProxy.migrateAll(AssetMigrater$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrater.migrateAll(Jcr2VfsMigrater.java:91) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrater$Proxy$_$$_WeldClientProxy.migrateAll(Jcr2VfsMigrater$Proxy$_$$_WeldClientProxy.java) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrationApp.migrate(Jcr2VfsMigrationApp.java:64) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrationApp.run(Jcr2VfsMigrationApp.java:52) at org.drools.workbench.jcr2vfsmigration.Jcr2VfsMigrationApp.main(Jcr2VfsMigrationApp.java:37) ********************************************************************** Version-Release number of selected component (if applicable): 6.1.0.DR3 How reproducible: Always Steps to Reproduce: 1. Simply run the tool against Guvnor 5.x repo that has DRL or BRL assets. Actual results: Exceptions during the migration (see above). Expected results: The migration should be successful.
The tool has been refactored, so that now the export phase from JCR is completely separated from the import into VFS phase. Known remaining issue: in the import phase some stack traces appear in the console output, but they do not seem to affect the correct outcome of the migration, and therefore their cause has not been investigated upon yet. The solution has been committed and pushed both to master as well as 6.2.x
Verified fixed in 6.1.0.ER4. The migration tool has been split into two modules (jcr export + vfs import) to avoid the classpath order issues.