diff options
author | Trumeet <yuuta@yuuta.moe> | 2021-04-03 16:16:58 -0700 |
---|---|---|
committer | Trumeet <yuuta@yuuta.moe> | 2021-04-03 16:16:58 -0700 |
commit | 78794e70902fcf020e5438ba2a258ef34a7f46fd (patch) | |
tree | 184375f1a37f55d662029277c1019051e9b5be97 | |
parent | bcc4b45ae926937eba3fdbf7d3504998d0a80397 (diff) | |
download | dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.tar dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.tar.gz dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.tar.bz2 dn42peering-78794e70902fcf020e5438ba2a258ef34a7f46fd.zip |
feat(agent): always use sequential execution
-rw-r--r-- | agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java b/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java index 97daf61..f477599 100644 --- a/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java +++ b/agent/src/main/java/moe/yuuta/dn42peering/agent/grpc/AgentServiceImpl.java @@ -1,6 +1,5 @@ package moe.yuuta.dn42peering.agent.grpc; -import io.vertx.core.CompositeFuture; import io.vertx.core.Future; import io.vertx.core.Vertx; import io.vertx.core.impl.logging.Logger; @@ -13,7 +12,6 @@ import moe.yuuta.dn42peering.agent.provision.Change; import moe.yuuta.dn42peering.agent.provision.WireGuardProvisioner; import javax.annotation.Nonnull; -import java.util.ArrayList; import java.util.List; class AgentServiceImpl extends VertxAgentGrpc.AgentVertxImplBase { @@ -43,16 +41,14 @@ class AgentServiceImpl extends VertxAgentGrpc.AgentVertxImplBase { final BGPProvisioner bgpProvisioner = new BGPProvisioner(vertx); final WireGuardProvisioner wireGuardProvisioner = new WireGuardProvisioner(vertx); - final List<Future> execFutures = new ArrayList<>(2); - execFutures.add(bgpProvisioner.calculateChanges(config.getNode(), config.getBgpsList()) - .compose(this::chainChanges)); - execFutures.add(wireGuardProvisioner.calculateChanges(config.getNode(), config.getWgsList()) - .compose(this::chainChanges)); - + // TODO: Currently all provisioning operations are non-fault-tolering. This means that + // TODO: if one operation fails, the following will fail. This may be changed in later. // Changes in each provisioners are executed in sequence. - // Two provisioners are executed in parallel. - // We must wait all calculations done. - return CompositeFuture.join(execFutures) + // Two provisioners are executed in sequence. + return bgpProvisioner.calculateChanges(config.getNode(), config.getBgpsList()) + .compose(this::chainChanges) + .compose(_v -> wireGuardProvisioner.calculateChanges(config.getNode(), config.getWgsList()) + .compose(this::chainChanges)) .onSuccess(res -> logger.info("Deployment finished. Detailed log can be traced above.")) .onFailure(err -> logger.error("Deployment failed. Detailed log can be traced above.", err)) .compose(compositeFuture -> Future.succeededFuture(null)); |