SmartThingsOSS / ratpack-cassandra

Other
14 stars 13 forks source link

[Question] How do I get resources to load correctly for migrations? #8

Closed rahulsom closed 8 years ago

rahulsom commented 8 years ago

This is the structure of my src/main/resources

.
├── application.yml
├── banner.txt
├── log4j2.xml
└── migrations
    └── init.cql

My ratpack.groovy has this

    module(CassandraMigrationModule) {
      it.seeds = fooConfig.datastore.seed
      it.keyspace = fooConfig.datastore.keyspace
      it.autoMigrate = true
      it.migrationFile = 'migrations'
    }

When I start my application, I get this

Failed while running migrations.
java.lang.IllegalArgumentException: resource init.cql not found.
    at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) ~[guava-18.0.jar:?]
    at com.google.common.io.Resources.getResource(Resources.java:197) ~[guava-18.0.jar:?]
    at smartthings.migration.MigrationRunner.loadResource(MigrationRunner.java:32) ~[cassandra-migration-0.0.12-SNAPSHOT.jar:?]
    at smartthings.migration.MigrationRunner.run(MigrationRunner.java:65) ~[cassandra-migration-0.0.12-SNAPSHOT.jar:?]
    at smartthings.ratpack.cassandra.CassandraMigrationService.onStart(CassandraMigrationService.java:54) ~[ratpack-cassandra-migrate-0.4.0.jar:?]
    at ratpack.service.internal.DefaultLegacyServiceAdapter.onStart(DefaultLegacyServiceAdapter.java:44) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.service.internal.ServicesGraph$Node.lambda$start$2(ServicesGraph.java:303) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.exec.internal.DefaultExecution$InitialExecStream.exec(DefaultExecution.java:373) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.exec.internal.DefaultExecution.exec(DefaultExecution.java:246) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.exec.internal.DefaultExecution.intercept(DefaultExecution.java:239) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.exec.internal.DefaultExecution.drain(DefaultExecution.java:219) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.exec.internal.DefaultExecution.<init>(DefaultExecution.java:95) ~[ratpack-core-1.3.0.jar:?]
    at ratpack.exec.internal.DefaultExecController$1.lambda$start$0(DefaultExecController.java:172) ~[ratpack-core-1.3.0.jar:?]
    at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:73) ~[netty-common-4.1.0.CR6.jar:4.1.0.CR6]
    at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:339) ~[netty-common-4.1.0.CR6.jar:4.1.0.CR6]
    at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:373) ~[netty-transport-4.1.0.CR6.jar:4.1.0.CR6]
    at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:742) ~[netty-common-4.1.0.CR6.jar:4.1.0.CR6]
    at ratpack.exec.internal.DefaultExecController$ExecControllerBindingThreadFactory.lambda$newThread$0(DefaultExecController.java:113) ~[ratpack-core-1.3.0.jar:?]
    at io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.run(DefaultThreadFactory.java:137) ~[netty-common-4.1.0.CR6.jar:4.1.0.CR6]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_60]
rahulsom commented 8 years ago

I've figured out what needed to be in the file.

rahulsom commented 8 years ago

This is what I had to do.

.
├── application.yml
├── banner.txt
├── cassandra.changelog
├── log4j2.xml
└── migrations
    └── init.cql

cassandra.changelog should have

/migrations/init.cql

And ratpack.groovy should have

    module(CassandraMigrationModule) {
      it.seeds = fooConfig.datastore.seed
      it.keyspace = fooConfig.datastore.keyspace
      it.autoMigrate = true
      it.migrationFile = 'cassandra.changelog'
    }