/** * Undeploys the previously deployed verticle. * * @param completionHandler the completion handler */ public void undeploy(Handler<AsyncResult<Void>> completionHandler) { vertx.undeploy(deploymentId, res -> { if (res.failed()) { log.error("Failed in undeploying " + deploymentId, res.cause()); } else { log.info("Succeeded in undeploying " + deploymentId); } deploymentId = null; completionHandler.handle(res); }); }
private static void logInternal(final String perms) { if (perms != null && log.isDebugEnabled()) { log.debug("You are running on Windows and POSIX style file permissions are not supported"); } }
AtomicBoolean failed = new AtomicBoolean(); for (Closeable hook : copy) { Future<Void> a = Future.future(); a.setHandler(ar -> { if (ar.failed()) { if (failed.compareAndSet(false, true)) { completionHandler.handle(Future.failedFuture(ar.cause())); completionHandler.handle(Future.succeededFuture()); hook.close(a); } catch (Throwable t) { log.warn("Failed to run close hooks", t); a.tryFail(t); completionHandler.handle(Future.succeededFuture());
private void deployHADeployments() { int size = toDeployOnQuorum.size(); if (size != 0) { log.info("There are " + size + " HA deploymentIDs waiting on a quorum. These will now be deployed"); Runnable task; while ((task = toDeployOnQuorum.poll()) != null) { try { task.run(); } catch (Throwable t) { log.error("Failed to run redeployment task", t); } } } }
private void doDeployVerticle(final String verticleName, DeploymentOptions deploymentOptions, final Handler<AsyncResult<String>> doneHandler) { final Handler<AsyncResult<String>> wrappedHandler = ar1 -> { vertx.<String>executeBlocking(fut -> { if (ar1.succeeded()) { // Tell the other nodes of the cluster about the verticle for HA purposes String deploymentID = ar1.result(); addToHA(deploymentID, verticleName, deploymentOptions); fut.complete(deploymentID); } else { fut.fail(ar1.cause()); } }, false, ar2 -> { if (doneHandler != null) { doneHandler.handle(ar2); } else if (ar2.failed()) { log.error("Failed to deploy verticle", ar2.cause()); } }); }; deploymentManager.deployVerticle(verticleName, deploymentOptions, wrappedHandler); }
private void removeSub(String subName, ClusterNodeInfo node, Handler<AsyncResult<Void>> completionHandler) { subs.remove(subName, node, ar -> { if (!ar.succeeded()) { log.error("Failed to remove sub", ar.cause()); } else { if (ar.result()) { if (completionHandler != null) { completionHandler.handle(Future.succeededFuture()); } } else { if (completionHandler != null) { completionHandler.handle(Future.failedFuture("sub not found")); } } } }); }
/** * test socks4a proxy for accessing arbitrary server port using an already resolved address. */ @Test public void testWithSocks4LocalResolver() throws Exception { NetClientOptions clientOptions = new NetClientOptions() .setProxyOptions(new ProxyOptions().setType(ProxyType.SOCKS4).setPort(11080)); NetClient client = vertx.createNetClient(clientOptions); server.connectHandler(sock -> { }); proxy = new Socks4Proxy(null).start(vertx); server.listen(1234, "localhost", ar -> { assertTrue(ar.succeeded()); client.connect(1234, "127.0.0.1", ar2 -> { if (ar2.failed()) { log.warn("failed", ar2.cause()); } assertTrue(ar2.succeeded()); // make sure we have gone through the proxy assertEquals("127.0.0.1:1234", proxy.getLastUri()); testComplete(); }); }); await(); }
bindFuture = AsyncResolveConnectHelper.doBind(vertx, socketAddress, bootstrap); bindFuture.addListener(res -> { if (res.succeeded()) { Channel ch = res.result(); log.trace("Net server listening on " + (hostOrPath) + ":" + ch.localAddress()); vertx.runOnContext(v -> listenHandler.handle(Future.failedFuture(t))); } else { log.error(t); if (listenHandler != null) { AsyncResult<Void> ares; if (res.succeeded()) { ares = Future.succeededFuture(); } else { listening = false; ares = Future.failedFuture(res.cause()); listenContext.runOnContext(v -> listenHandler.handle(ares)); } else if (res.failed()) { log.error("Failed to listen", res.cause()); listening = false;
private void createHaManager(VertxOptions options, Handler<AsyncResult<Vertx>> resultHandler) { this.<Map<String, String>>executeBlocking(fut -> { fut.complete(clusterManager.getSyncMap(CLUSTER_MAP_NAME)); }, false, ar -> { if (ar.succeeded()) { Map<String, String> clusterMap = ar.result(); haManager = new HAManager(this, deploymentManager, clusterManager, clusterMap, options.getQuorumSize(), options.getHAGroup(), options.isHAEnabled()); startEventBus(resultHandler); } else { log.error("Failed to start HAManager", ar.cause()); resultHandler.handle(Future.failedFuture(ar.cause())); } }); }
private void initializeHaManager(Handler<AsyncResult<Vertx>> resultHandler) { this.executeBlocking(fut -> { // Init the manager (i.e register listener and check the quorum) // after the event bus has been fully started and updated its state // it will have also set the clustered changed view handler on the ha manager haManager.init(); fut.complete(); }, false, ar -> { if (ar.succeeded()) { if (metrics != null) { metrics.vertxCreated(this); } resultHandler.handle(Future.succeededFuture(this)); } else { log.error("Failed to initialize HAManager", ar.cause()); resultHandler.handle(Future.failedFuture(ar.cause())); } }); }
if (replyAddress != null) { replyHandler = result -> { if (result.succeeded()) { Message message = result.result(); deliverMessage(sock, replyAddress, message); } else { ReplyException cause = (ReplyException) result.cause(); JsonObject envelope = new JsonObject() .put("type", "err") .put("address", replyAddress) .put("failureCode", cause.failureCode()) .put("failureType", cause.failureType().name()) replyHandler = null; if (log.isDebugEnabled()) { log.debug("Forwarding message to address " + address + " on event bus");
final String verticleName = failedVerticle.getString("verticle_name"); final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Throwable> err = new AtomicReference<>(); JsonObject options = failedVerticle.getJsonObject("options"); try { doDeployVerticle(verticleName, new DeploymentOptions(options), result -> { if (result.succeeded()) { log.info("Successfully redeployed verticle " + verticleName + " after failover"); } else { log.error("Failed to redeploy verticle after failover", result.cause()); err.set(result.cause());
@Before public void startVerticle(TestContext testContext) { Async async = testContext.async(); JsonObject config = new JsonObject("{\"config\":{\"address\":\"vertx.mail\",\"hostname\":\"localhost\",\"port\":1587}}"); DeploymentOptions deploymentOptions = new DeploymentOptions(config); vertx.deployVerticle("io.vertx.ext.mail.MailServiceVerticle", deploymentOptions ,r -> { if(r.succeeded()) { log.info(r.result()); async.complete(); } else { log.info("exception", r.cause()); testContext.fail(r.cause()); } }); }
completionHandler.handle(Future.succeededFuture()); deploymentManager.undeployAll(ar1 -> { HAManager haManager = haManager(); Future<Void> haFuture = Future.future(); if (haManager != null) { this.executeBlocking(fut -> { haManager.stop(); fut.complete(); }, false, haFuture); } else { if (res.failed()) { log.error("Failure in shutting down server", res.cause());
Vertx instance; if (isClustered()) { log.info("Starting clustering..."); if (!Objects.equals(options.getClusterHost(), VertxOptions.DEFAULT_CLUSTER_HOST)) { clusterHost = options.getClusterHost(); clusterHost = getDefaultAddress(); if (clusterHost == null) { log.error("Unable to find a default network interface for clustering. Please specify one using -cluster-host"); return null; } else { log.info("No cluster-host specified so using address " + clusterHost); try { if (!latch.await(2, TimeUnit.MINUTES)) { log.error("Timed out in starting clustered Vert.x"); return null; log.error("Thread interrupted in startup"); Thread.currentThread().interrupt(); return null; if (result.get().failed()) { log.error("Failed to form cluster"); result.get().cause().printStackTrace(); return null;
log.error("Will not send message, reply address is > 36 chars"); replyError(sock, "invalid_reply_address"); return; final boolean debug = log.isDebugEnabled(); if (debug) { log.debug("Received msg from client in bridge. address:" + address + " message:" + body); if (webUser != null) { authorise(curMatch, webUser, res -> { if (res.succeeded()) { if (res.result()) { checkAndSend(send, address, body, headers, sock, replyAddress, null); } else { replyError(sock, "access_denied"); if (debug) { log.debug("Inbound message for address " + address + " rejected because is not authorised"); log.error("Error in performing authorisation", res.cause()); log.debug("Inbound message for address " + address + " rejected because it requires auth and user is not authenticated"); log.debug("Inbound message for address " + address + " rejected because there is no match");
final boolean debug = log.isDebugEnabled(); final String address = rawMsg.getString("address"); if (address == null) { replyError(sock, "missing_address"); return; } else if (address.length() > maxAddressLength) { log.warn("Refusing to register as address length > max_address_length"); replyError(sock, "max_address_length_reached"); return; if (curMatch.requiredAuthority != null) { authorise(curMatch, sock.webUser(), res -> { if (res.succeeded()) { if (res.result()) { checkAddAccceptedReplyAddress(msg); deliverMessage(sock, address, msg); } else { if (debug) { log.debug("Outbound message for address " + address + " rejected because auth is required and socket is not authed"); log.error(res.cause()); log.debug("Outbound message for address " + address + " rejected because there is no inbound match"); log.debug("Cannot register handler for address " + address + " because there is no inbound match");
protected void undeployVerticle(TestContext context, AbstractVerticle verticle) { LOGGER.debug("undeploying verticle " + verticle.deploymentID()); Async async = context.async(); vertx.undeploy(verticle.deploymentID(), result -> { if (result.failed()) { LOGGER.error(result.cause()); context.fail(result.cause()); async.complete(); } else { LOGGER.debug("succeeded undeploying verticle " + verticle.deploymentID()); async.complete(); } }); async.awaitSuccess(); LOGGER.debug("finished undeploying verticle " + verticle.deploymentID()); }
HttpServerOptions options = new HttpServerOptions(); options.setHost("localhost").setPort(PORT); server = vertx.createHttpServer(options); server.requestHandler(request -> { HttpMethod method = request.method(); NetClient netClient = vertx.createNetClient(netOptions); netClient.connect(port, host, result -> { if (result.succeeded()) { NetSocket serverSocket = request.netSocket(); NetSocket clientSocket = result.result(); serverSocket.closeHandler(v -> clientSocket.close()); clientSocket.closeHandler(v -> serverSocket.close()); uri = forceUri; HttpClient client = vertx.createHttpClient(); HttpClientRequest clientRequest = client.getAbs(uri, ar -> { if (ar.succeeded()) { HttpClientResponse resp = ar.result(); for (String name : resp.headers().names()) { } else { Throwable e = ar.cause(); log.debug("exception", e); int status; if (e instanceof UnknownHostException) {