diff --git a/pom.xml b/pom.xml index 31aa67151b7ba7d044836df2aefe525f068dd0a5..3ad3b0402c63532ba6d93beec400961b04cde903 100644 --- a/pom.xml +++ b/pom.xml @@ -47,9 +47,9 @@ <spring-data-jpa.version>1.10.11.RELEASE</spring-data-jpa.version> <spring-boot-starter-actuator.version>1.4.7.RELEASE</spring-boot-starter-actuator.version> <aspectjweaver.version>1.8.9</aspectjweaver.version> - <woken-messages.version>2.8.1</woken-messages.version> + <woken-messages.version>2.8.4</woken-messages.version> <javax-inject.version>1</javax-inject.version> - <akka.version>2.5.18</akka.version> + <akka.version>2.5.19</akka.version> <spring-context.version>4.3.4.RELEASE</spring-context.version> <protobuf-java.version>3.1.0</protobuf-java.version> diff --git a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java index 59375f7ab4916753bf108ead11e9a37d9ebd59cd..d85bf5d3afbee20d3f03c4b37b864636c0892ff5 100644 --- a/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java +++ b/src/main/java/eu/hbp/mip/configuration/AkkaConfiguration.java @@ -90,9 +90,17 @@ class AkkaConfiguration { } } - Runtime.getRuntime().addShutdownHook(new Thread(() -> { - cluster.leave(cluster.selfAddress()); - }) + final Runnable leaveCluster = () -> cluster.leave(cluster.selfAddress()); + actorSystem().registerOnTermination(leaveCluster); + + cluster.registerOnMemberRemoved( () -> { + LOGGER.info("Exiting..."); + cluster.leave(cluster.selfAddress()); + actorSystem().registerOnTermination(() -> System.exit(0)); + actorSystem().terminate(); + }); + + Runtime.getRuntime().addShutdownHook(new Thread(leaveCluster) ); LOGGER.info("Step 3/3: Cluster connected to Woken."); diff --git a/src/main/java/eu/hbp/mip/model/Experiment.java b/src/main/java/eu/hbp/mip/model/Experiment.java index 33d5530a24318fb50d66a72c3c11d71a3dc2c479..5fb1e24a78a929641a5a3010946d812bfd60dcf1 100644 --- a/src/main/java/eu/hbp/mip/model/Experiment.java +++ b/src/main/java/eu/hbp/mip/model/Experiment.java @@ -97,7 +97,7 @@ public class Experiment { public ExperimentQuery prepareQuery(String user) { if (model == null || model.getQuery() == null) - return new ExperimentQuery(null, null, null, null, null, Option.empty(), null, null, null, null, null, null); + return new ExperimentQuery(null, null, null, false,null, null, Option.empty(), null, null, null, null, null, null); List<AlgorithmSpec> algorithms = new LinkedList<>(); Type algoList = new TypeToken<LinkedList<eu.hbp.mip.model.Algorithm>>(){}.getType(); @@ -131,7 +131,8 @@ public class Experiment { Option<FilterRule> filters = conv.toFilterRule(filtersJson); UserId userId = new UserId(user); - return new ExperimentQuery(userId, variablesSeq, covariablesSeq, groupingSeq, filters, Option.empty(), + // TODO: covariablesMustExist argument should be set from a user intention? Or maybe automatically selected based on the list of algorithms??? + return new ExperimentQuery(userId, variablesSeq, covariablesSeq, false, groupingSeq, filters, Option.empty(), trainingDatasets, testingDatasets, algorithmsSeq, validationDatasets, validationsSeq, Option.empty()); } diff --git a/src/main/java/eu/hbp/mip/model/MiningQuery.java b/src/main/java/eu/hbp/mip/model/MiningQuery.java index 908ef52193221feec68520c88662d9e3ac7b5b56..5ad30ea89fd1c246647f8f62aff9d79f07040a06 100644 --- a/src/main/java/eu/hbp/mip/model/MiningQuery.java +++ b/src/main/java/eu/hbp/mip/model/MiningQuery.java @@ -106,7 +106,7 @@ public class MiningQuery { Option<FilterRule> filters = conv.toFilterRule(filtersJson); return new ch.chuv.lren.woken.messages.query.MiningQuery(userId, - variablesSeq, covariablesSeq, groupingSeq, filters, Option.empty(), datasets, scalaAlgorithm, Option.empty()); + variablesSeq, covariablesSeq, true, groupingSeq, filters, Option.empty(), datasets, scalaAlgorithm, Option.empty()); } @Override