Skip to content

Commit 03a6b24

Browse files
ezraroilchayoun
authored andcommitted
Codeine 255 (#256)
* codeine-253 disable connection pool on large deployment * codeine-255 UI should use uniqe not on alias but on host:uqnie filed - also changed default node interval from 29 seconds to 60 and exposed it via configuration * codeine-255 UI should use uniqe not on alias but on host:uqnie filed - also changed default node interval from 29 seconds to 60 and exposed it via configuration * codeine-255 UI should use uniqe not on alias but on host:uqnie filed - also changed default node interval from 29 seconds to 60 and exposed it via configuration * codeine-255 UI should use uniqe not on alias but on host:uqnie filed - also changed default node interval from 29 seconds to 60 and exposed it via configuration
1 parent edfffb7 commit 03a6b24

File tree

4 files changed

+28
-35
lines changed

4 files changed

+28
-35
lines changed

deployment/http-root/ajs/app/components/project_status/project_status.html

+2-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,8 @@
102102
</div>
103103
</div>
104104
</accordion-heading>
105-
<div class="row" ng-repeat="node in versionItem.visibleNodes track by node.immutable.alias | orderBy:'alias'">
105+
<div class="row"
106+
ng-repeat="node in versionItem.visibleNodes track by node.immutable.name | orderBy:'alias'">
106107
<div ng-class="{'col-md-3': maxNodeAliasLength <= maxNodeAliasLengthForSmallCol, 'col-md-5': maxNodeAliasLength > maxNodeAliasLengthForSmallCol}" class="fade_me" tooltip="{{::((node.immutable.alias.length > (maxNodeAliasLengthForSmallCol-5) && node.immutable.alias.length <= maxNodeAliasLengthForSmallCol) || node.immutable.alias.length > 40 ) ? node.immutable.alias : ''}}" tooltip-placement="right" tooltip-popup-delay="500">
107108
<form class="form-inline" role="form">
108109
<div class="checkbox">

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<properties>
99
<prometheus_client_version>0.3.0</prometheus_client_version>
1010
<drop_wizard_version>3.2.6</drop_wizard_version>
11-
<jetty_version>9.4.11.v20180605</jetty_version>
11+
<jetty_version>9.4.17.v20190418</jetty_version>
1212
</properties>
1313
<build>
1414
<sourceDirectory>src/external/mysql_lib</sourceDirectory>
@@ -123,7 +123,7 @@
123123
<plugin>
124124
<groupId>org.apache.maven.plugins</groupId>
125125
<artifactId>maven-failsafe-plugin</artifactId>
126-
<version>2.17</version>
126+
<version>2.22.2</version>
127127
<configuration>
128128
<includes>
129129
<include>integration_tests/**/*Test.java</include>

src/common/codeine/jsons/global/GlobalConfigurationJson.java

+5
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public class GlobalConfigurationJson {
2828
private boolean prometheus_enabled = true;
2929
private Integer connectivity_check_timeout_ms = 3000;
3030
private boolean consul_registration;
31+
private Integer node_interval_seconds = 60;
3132

3233
public GlobalConfigurationJson() {
3334
}
@@ -115,4 +116,8 @@ public Integer connectivity_check_timeout_ms() {
115116
return connectivity_check_timeout_ms;
116117
}
117118

119+
public Integer node_interval_seconds() {
120+
return node_interval_seconds;
121+
}
122+
118123
}

src/peer/codeine/nodes/NodesRunner.java

+19-32
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,15 @@
11
package codeine.nodes;
22

3-
import codeine.PeerStatusChangedUpdater;
4-
import codeine.SnoozeKeeper;
53
import codeine.api.NodeInfo;
64
import codeine.collectors.CollectorsRunner;
75
import codeine.collectors.CollectorsRunnerFactory;
86
import codeine.configuration.IConfigurationManager;
9-
import codeine.configuration.PathHelper;
107
import codeine.executer.PeriodicExecuter;
118
import codeine.executer.Task;
12-
import codeine.jsons.global.GlobalConfigurationJsonStore;
9+
import codeine.jsons.global.GlobalConfigurationJson;
1310
import codeine.jsons.nodes.NodesManager;
1411
import codeine.jsons.peer_status.PeerStatus;
1512
import codeine.jsons.project.ProjectJson;
16-
import codeine.mail.MailSender;
17-
import codeine.mail.NotificationDeliverToDatabase;
1813
import codeine.utils.network.InetUtils;
1914
import com.google.common.collect.Lists;
2015
import com.google.common.collect.Maps;
@@ -32,8 +27,10 @@ public class NodesRunner implements Task {
3227

3328
private static final Logger log = Logger.getLogger(NodesRunner.class);
3429

35-
private static final long NODE_MONITOR_INTERVAL = TimeUnit.SECONDS.toMillis(29);
36-
public static final long NODE_RUNNER_INTERVAL = TimeUnit.HOURS.toMillis(1);
30+
private long nodeMonitorInterval = TimeUnit.SECONDS.toMillis(60);
31+
32+
@Inject
33+
private GlobalConfigurationJson globalConfigurationJson;
3734

3835
@Inject
3936
private IConfigurationManager configurationManager;
@@ -51,10 +48,11 @@ public class NodesRunner implements Task {
5148

5249
@Override
5350
public synchronized void run() {
51+
nodeMonitorInterval = TimeUnit.SECONDS.toMillis(globalConfigurationJson.node_interval_seconds());
5452
InetAddress localHost = InetUtils.getLocalHost();
55-
log.info("NodeRunner is starting on host " + localHost.getHostName() + " " + localHost
56-
.getCanonicalHostName());
57-
log.info("NodeRunner is starting " + this + " with executers " + executers);
53+
log.info("NodeRunner is starting on host " + localHost.getHostName() + " " + localHost.getCanonicalHostName());
54+
log.info("NodeRunner is starting " + this + " with executers " + executers + " interval is "
55+
+ nodeMonitorInterval);
5856
Set<String> removedProjects = Sets.newHashSet(executers.keySet());
5957
for (ProjectJson project : getProjects()) {
6058
removedProjects.remove(project.name());
@@ -94,34 +92,29 @@ private void stop(PeriodicExecuter e) {
9492

9593
private boolean startStopExecutorsForProject(ProjectJson project) {
9694
Map<NodeInfo, PeriodicExecuter> currentNodes = getCurrentNodes(project);
97-
log.info(
98-
"project: " + project.name() + " currentProjectExecutors: " + currentNodes.keySet());
95+
log.info("project: " + project.name() + " currentProjectExecutors: " + currentNodes.keySet());
9996
SelectedNodes selectedNodes;
10097
try {
10198
selectedNodes = new NodesSelector(currentNodes, getNodes(project)).selectStartStop();
10299
} catch (Exception e) {
103-
log.error(
104-
"failed to select nodes for project " + project.name() + " will leave old nodes "
105-
+ currentNodes, e);
100+
log.error("failed to select nodes for project " + project.name() + " will leave old nodes " + currentNodes,
101+
e);
106102
return !currentNodes.isEmpty();
107103
}
108104
log.info("selectedNodes: " + selectedNodes);
109105
stopNodes(project.name(), selectedNodes.nodesToStop());
110-
Map<NodeInfo, PeriodicExecuter> newProjectExecutors = selectedNodes
111-
.existingProjectExecutors();
106+
Map<NodeInfo, PeriodicExecuter> newProjectExecutors = selectedNodes.existingProjectExecutors();
112107
for (NodeInfo nodeJson : selectedNodes.nodesToStart()) {
113108
log.info("start exec1 monitoring node " + nodeJson + " in project " + project.name());
114109
try {
115110
PeriodicExecuter e = startExecuter(project, nodeJson);
116111
newProjectExecutors.put(nodeJson, e);
117112
} catch (Exception e1) {
118-
log.error("failed to start executor for node " + nodeJson + " in project " + project
119-
.name(), e1);
113+
log.error("failed to start executor for node " + nodeJson + " in project " + project.name(), e1);
120114
}
121115
}
122116
executers.put(project.name(), newProjectExecutors);
123-
log.info(
124-
"project: " + project.name() + " newProjectExecutors: " + newProjectExecutors.keySet());
117+
log.info("project: " + project.name() + " newProjectExecutors: " + newProjectExecutors.keySet());
125118
return !executers.get(project.name()).isEmpty();
126119
}
127120

@@ -134,23 +127,17 @@ private void stopNodes(String project, Map<NodeInfo, PeriodicExecuter> map) {
134127
}
135128

136129
private Map<NodeInfo, PeriodicExecuter> getCurrentNodes(ProjectJson project) {
137-
Map<NodeInfo, PeriodicExecuter> currentNodes = executers.get(project.name());
138-
if (null == currentNodes) {
139-
currentNodes = Maps.newHashMap();
140-
executers.put(project.name(), currentNodes);
141-
}
142-
return currentNodes;
130+
return executers.computeIfAbsent(project.name(), k -> Maps.newHashMap());
143131
}
144132

145133
private PeriodicExecuter startExecuter(ProjectJson project, NodeInfo nodeJson) {
146134
log.info("Starting monitor thread for project " + project.name() + " node " + nodeJson);
147135
Task task;
148-
CollectorsRunner collectorsTask = collectorsRunnerFactory
149-
.create(project.name(), nodeJson);
136+
CollectorsRunner collectorsTask = collectorsRunnerFactory.create(project.name(), nodeJson);
150137
collectorsTask.init();
151138
task = collectorsTask;
152-
PeriodicExecuter periodicExecuter = new PeriodicExecuter(NODE_MONITOR_INTERVAL,
153-
task, "RunMonitors_" + project.name() + "_" + nodeJson.name());
139+
PeriodicExecuter periodicExecuter = new PeriodicExecuter(nodeMonitorInterval, task,
140+
"RunMonitors_" + project.name() + "_" + nodeJson.name());
154141
log.info("starting 1executor " + periodicExecuter.name());
155142
periodicExecuter.runInThread();
156143
return periodicExecuter;

0 commit comments

Comments
 (0)