From ebeb6ac1af531c1047ea26e886cd2245191e0893 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Wed, 8 Jan 2020 03:28:23 -0500 Subject: [PATCH] wait for account plan enablement --- .../src/main/java/bubble/dao/bill/AccountPlanDAO.java | 4 +++- .../bubble/service/cloud/StandardNetworkService.java | 11 +++++++---- .../service/dbfilter/DatabaseFilterService.java | 2 +- bubble-server/src/main/resources/logback.xml | 2 +- bubble-web | 2 +- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/bubble-server/src/main/java/bubble/dao/bill/AccountPlanDAO.java b/bubble-server/src/main/java/bubble/dao/bill/AccountPlanDAO.java index c0fc3376..43ac6a47 100644 --- a/bubble-server/src/main/java/bubble/dao/bill/AccountPlanDAO.java +++ b/bubble-server/src/main/java/bubble/dao/bill/AccountPlanDAO.java @@ -28,6 +28,8 @@ import static org.hibernate.criterion.Restrictions.*; @Repository public class AccountPlanDAO extends AccountOwnedEntityDAO { + public static final long PURCHASE_DELAY = SECONDS.toMillis(3); + @Autowired private BubblePlanDAO planDAO; @Autowired private BillDAO billDAO; @Autowired private CloudServiceDAO cloudDAO; @@ -111,7 +113,7 @@ public class AccountPlanDAO extends AccountOwnedEntityDAO { final PaymentServiceDriver paymentDriver = paymentService.getPaymentDriver(configuration); background(() -> { - sleep(SECONDS.toMillis(3), "AccountPlanDAO.postCreate: waiting to finalize purchase"); + sleep(PURCHASE_DELAY, "AccountPlanDAO.postCreate: waiting to finalize purchase"); paymentDriver.purchase(accountPlanUuid, paymentMethodUuid, billUuid); }); } diff --git a/bubble-server/src/main/java/bubble/service/cloud/StandardNetworkService.java b/bubble-server/src/main/java/bubble/service/cloud/StandardNetworkService.java index 98eec470..c7fce384 100644 --- a/bubble-server/src/main/java/bubble/service/cloud/StandardNetworkService.java +++ b/bubble-server/src/main/java/bubble/service/cloud/StandardNetworkService.java @@ -47,6 +47,7 @@ import java.util.concurrent.atomic.AtomicReference; import static bubble.ApiConstants.getRemoteHost; import static bubble.ApiConstants.newNodeHostname; +import static bubble.dao.bill.AccountPlanDAO.PURCHASE_DELAY; import static bubble.model.cloud.BubbleNode.TAG_ERROR; import static bubble.service.boot.StandardSelfNodeService.*; import static bubble.service.cloud.NodeProgressMeter.getProgressMeterKey; @@ -55,11 +56,9 @@ import static bubble.service.cloud.NodeProgressMeterConstants.*; import static java.util.concurrent.TimeUnit.MINUTES; import static java.util.concurrent.TimeUnit.SECONDS; import static org.apache.commons.lang3.RandomStringUtils.randomAlphanumeric; -import static org.cobbzilla.util.daemon.ZillaRuntime.daemon; -import static org.cobbzilla.util.daemon.ZillaRuntime.die; +import static org.cobbzilla.util.daemon.ZillaRuntime.*; import static org.cobbzilla.util.io.FileUtil.*; import static org.cobbzilla.util.io.StreamUtil.stream2string; -import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER; import static org.cobbzilla.util.json.JsonUtil.json; import static org.cobbzilla.util.reflect.ReflectionUtil.closeQuietly; import static org.cobbzilla.util.system.CommandShell.chmod; @@ -91,6 +90,7 @@ public class StandardNetworkService implements NetworkService { private static final long NET_LOCK_TIMEOUT = MINUTES.toSeconds(21); private static final long NET_DEADLOCK_TIMEOUT = MINUTES.toSeconds(20); private static final long DNS_TIMEOUT = MINUTES.toMillis(60); + private static final long PLAN_ENABLE_TIMEOUT = PURCHASE_DELAY + SECONDS.toMillis(2); @Autowired private AccountDAO accountDAO; @Autowired private BubbleNetworkDAO networkDAO; @@ -465,6 +465,10 @@ public class StandardNetworkService implements NetworkService { if (configuration.paymentsEnabled()) { final AccountPlan accountPlan = accountPlanDAO.findByAccountAndNetwork(accountUuid, network.getUuid()); if (accountPlan == null) throw invalidEx("err.accountPlan.notFound"); + final long start = now(); + while (accountPlan.disabled() && now() - start < PLAN_ENABLE_TIMEOUT) { + sleep(100, "startNetwork: waiting for accountPlan to become enabled: "+accountUuid); + } if (accountPlan.disabled()) throw invalidEx("err.accountPlan.disabled"); } @@ -653,7 +657,6 @@ public class StandardNetworkService implements NetworkService { log.warn("getLaunchStatus: tick.account != accountUuid, returning null"); return null; } - log.warn("getLaunchStatus: returning tick: "+json(tick, COMPACT_MAPPER)); return tick.setPattern(null); } catch (Exception e) { return die("getLaunchStatus: "+e); diff --git a/bubble-server/src/main/java/bubble/service/dbfilter/DatabaseFilterService.java b/bubble-server/src/main/java/bubble/service/dbfilter/DatabaseFilterService.java index 45220e2e..40a26c12 100644 --- a/bubble-server/src/main/java/bubble/service/dbfilter/DatabaseFilterService.java +++ b/bubble-server/src/main/java/bubble/service/dbfilter/DatabaseFilterService.java @@ -38,7 +38,7 @@ import static org.cobbzilla.wizard.server.config.PgRestServerConfiguration.ENV_P @Service @Slf4j public class DatabaseFilterService { - public static final long DB_FILTER_TIMEOUT = SECONDS.toMillis(60); + public static final long DB_FILTER_TIMEOUT = SECONDS.toMillis(120); public static final long THREAD_KILL_TIMEOUT = SECONDS.toMillis(10); public static final String ENV_OLD_DB_KEY = "OLD_DB_KEY"; diff --git a/bubble-server/src/main/resources/logback.xml b/bubble-server/src/main/resources/logback.xml index 4bf9eb74..3e82c2ce 100644 --- a/bubble-server/src/main/resources/logback.xml +++ b/bubble-server/src/main/resources/logback.xml @@ -33,10 +33,10 @@ - + diff --git a/bubble-web b/bubble-web index c04be671..cfc4cb7e 160000 --- a/bubble-web +++ b/bubble-web @@ -1 +1 @@ -Subproject commit c04be671c012a2a7454de143836af0a87bf5f175 +Subproject commit cfc4cb7e5c204672d498dbb1a1b3728076d9bf79