Skip to content

Commit

Permalink
APPNG-2477
Browse files Browse the repository at this point in the history
  • Loading branch information
madness-inc committed Apr 27, 2023
1 parent c6ee03a commit d6a8821
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 32 deletions.
2 changes: 0 additions & 2 deletions appng-api/src/main/java/org/appng/api/Platform.java
Original file line number Diff line number Diff line change
Expand Up @@ -224,8 +224,6 @@ public final class Property {
public static final String SESSION_TIMEOUT = "sessionTimeout";
/** The shared secret used for digest authentication */
public static final String SHARED_SECRET = "sharedSecret";
/** The offset in milliseconds before reloading a site (node specific)*/
public static final String SITE_RELOAD_DELAY = "siteReloadDelay";
/** The maximum random delay before reloading a site */
public static final String SITE_RELOAD_MAX_RANDOM_DELAY = "siteReloadMaxRandomDelay";
/** The folder used for templates, relative to the webapp-root */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,6 @@ protected void setNodeId(String nodeId) {
super.setNodeId(nodeId + "_appNGizer");
}

@Override
protected boolean delayed() {
return false;
}
}

@PutMapping(value = "/site/{name}/reload")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
public class ReloadSiteEvent extends SiteEvent {

private static final long serialVersionUID = 8053808333634879840L;
private static final int DEFAULT_MAX_RELOAD_DELAY = (int) TimeUnit.SECONDS.toMillis(5);

public ReloadSiteEvent(String siteName) {
super(siteName, true);
Expand All @@ -52,37 +53,27 @@ public void perform(Environment env, Site site) throws InvalidConfigurationExcep
if (isTargetNode(env)) {
logger.info("about to start site: {}", getSiteName());
FieldProcessor fp = new FieldProcessorImpl("start");
wait(env, site, logger);
waitForClusterState(env, site, logger);
SiteImpl siteByName = getPlatformContext(env).getBean(CoreService.class).getSiteByName(getSiteName());
getInitializerService(env).loadSite(env, siteByName, false, fp, false);
} else {
logIgnoreMessage(logger);
}
}

public void wait(Environment env, Site site, Logger logger) {
if (delayed()) {
Properties nodeCfg = env.getAttribute(Scope.PLATFORM, Platform.Environment.NODE_CONFIG);
long delayMillis = nodeCfg.getInteger(Platform.Property.SITE_RELOAD_DELAY, 0);
if (delayMillis <= 0) {
Properties cfg = env.getAttribute(Scope.PLATFORM, Platform.Environment.PLATFORM_CONFIG);
Integer siteReloadMaxDelay = cfg.getInteger(Platform.Property.SITE_RELOAD_MAX_RANDOM_DELAY, 10000);
delayMillis = (long) (Math.random() * siteReloadMaxDelay);
}
try {
logger.info("Waiting {}ms before reloading site {} on node {}", delayMillis, site.getName(),
Messaging.getNodeId());
Thread.sleep(delayMillis);
} catch (InterruptedException e) {
//
}
}
waitForClusterState(env, site, logger);
}

public void waitForClusterState(Environment env, Site site, Logger logger) {
Properties cfg = env.getAttribute(Scope.PLATFORM, Platform.Environment.PLATFORM_CONFIG);
if (cfg.getBoolean("waitForSitesStarted", false)) {
Integer siteReloadMaxDelay = cfg.getInteger(Platform.Property.SITE_RELOAD_MAX_RANDOM_DELAY,
DEFAULT_MAX_RELOAD_DELAY);
long delayMillis = (long) (Math.random() * siteReloadMaxDelay);
try {
logger.info("Waiting {}ms before reloading site {} on node {}", delayMillis, site.getName(),
Messaging.getNodeId());
Thread.sleep(delayMillis);
} catch (InterruptedException e) {
//
}
if (cfg.getBoolean("waitForSitesStarted", true)) {
String nodeId = Messaging.getNodeId();
Map<String, NodeState> nodeStates = NodeEvent.clusterState(env, nodeId);
int numNodes = nodeStates.size();
Expand All @@ -92,6 +83,9 @@ public void waitForClusterState(Environment env, Site site, Logger logger) {
int maxWaittime = cfg.getInteger("waitForSitesStartedMaxWaitTime", 30);
int activeNodes;

logger.info("Site {} must be {} on {} of {} nodes before reloading.", site.getName(), SiteState.STARTED,
minActiveNodes, numNodes);

do {
activeNodes = 0;
for (Entry<String, NodeState> state : nodeStates.entrySet()) {
Expand Down Expand Up @@ -122,8 +116,4 @@ public void waitForClusterState(Environment env, Site site, Logger logger) {
}
}

protected boolean delayed() {
return true;
}

}

0 comments on commit d6a8821

Please sign in to comment.