diff --git a/src/main/java/io/vertx/core/impl/DeploymentManager.java b/src/main/java/io/vertx/core/impl/DeploymentManager.java index 775727748..48c7162c7 100644 --- a/src/main/java/io/vertx/core/impl/DeploymentManager.java +++ b/src/main/java/io/vertx/core/impl/DeploymentManager.java @@ -463,7 +463,7 @@ public class DeploymentManager { deployment.child = true; } else { // Orphan - deployment.undeploy(null); + deployment.undeploy(event -> promise.fail("Verticle deployment failed.Could not be added as child of parent verticle")); return; } } diff --git a/src/test/java/io/vertx/core/DeploymentTest.java b/src/test/java/io/vertx/core/DeploymentTest.java index 4d7f74d4b..0a825f419 100644 --- a/src/test/java/io/vertx/core/DeploymentTest.java +++ b/src/test/java/io/vertx/core/DeploymentTest.java @@ -1234,6 +1234,22 @@ public class DeploymentTest extends VertxTestBase { vertx = null; } + @Test + public void testDeployChildOnParentUndeploy() { + class ParentVerticle extends AbstractVerticle { + @Override + public void stop(Promise stopPromise) { + vertx.deployVerticle(ChildVerticle.class.getName()) + .mapEmpty() + .setHandler(stopPromise); + } + } + + vertx.deployVerticle(new ParentVerticle(), onSuccess(id -> + vertx.undeploy(id, onFailure(u -> testComplete())))); + await(); + } + @Test public void testUndeployAllFailureInUndeploy() throws Exception { int numVerticles = 10;