1
1
package codeine .nodes ;
2
2
3
- import codeine .PeerStatusChangedUpdater ;
4
- import codeine .SnoozeKeeper ;
5
3
import codeine .api .NodeInfo ;
6
4
import codeine .collectors .CollectorsRunner ;
7
5
import codeine .collectors .CollectorsRunnerFactory ;
8
6
import codeine .configuration .IConfigurationManager ;
9
- import codeine .configuration .PathHelper ;
10
7
import codeine .executer .PeriodicExecuter ;
11
8
import codeine .executer .Task ;
12
- import codeine .jsons .global .GlobalConfigurationJsonStore ;
9
+ import codeine .jsons .global .GlobalConfigurationJson ;
13
10
import codeine .jsons .nodes .NodesManager ;
14
11
import codeine .jsons .peer_status .PeerStatus ;
15
12
import codeine .jsons .project .ProjectJson ;
16
- import codeine .mail .MailSender ;
17
- import codeine .mail .NotificationDeliverToDatabase ;
18
13
import codeine .utils .network .InetUtils ;
19
14
import com .google .common .collect .Lists ;
20
15
import com .google .common .collect .Maps ;
@@ -32,8 +27,10 @@ public class NodesRunner implements Task {
32
27
33
28
private static final Logger log = Logger .getLogger (NodesRunner .class );
34
29
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 ;
37
34
38
35
@ Inject
39
36
private IConfigurationManager configurationManager ;
@@ -51,10 +48,11 @@ public class NodesRunner implements Task {
51
48
52
49
@ Override
53
50
public synchronized void run () {
51
+ nodeMonitorInterval = TimeUnit .SECONDS .toMillis (globalConfigurationJson .node_interval_seconds ());
54
52
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 );
58
56
Set <String > removedProjects = Sets .newHashSet (executers .keySet ());
59
57
for (ProjectJson project : getProjects ()) {
60
58
removedProjects .remove (project .name ());
@@ -94,34 +92,29 @@ private void stop(PeriodicExecuter e) {
94
92
95
93
private boolean startStopExecutorsForProject (ProjectJson project ) {
96
94
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 ());
99
96
SelectedNodes selectedNodes ;
100
97
try {
101
98
selectedNodes = new NodesSelector (currentNodes , getNodes (project )).selectStartStop ();
102
99
} 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 );
106
102
return !currentNodes .isEmpty ();
107
103
}
108
104
log .info ("selectedNodes: " + selectedNodes );
109
105
stopNodes (project .name (), selectedNodes .nodesToStop ());
110
- Map <NodeInfo , PeriodicExecuter > newProjectExecutors = selectedNodes
111
- .existingProjectExecutors ();
106
+ Map <NodeInfo , PeriodicExecuter > newProjectExecutors = selectedNodes .existingProjectExecutors ();
112
107
for (NodeInfo nodeJson : selectedNodes .nodesToStart ()) {
113
108
log .info ("start exec1 monitoring node " + nodeJson + " in project " + project .name ());
114
109
try {
115
110
PeriodicExecuter e = startExecuter (project , nodeJson );
116
111
newProjectExecutors .put (nodeJson , e );
117
112
} 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 );
120
114
}
121
115
}
122
116
executers .put (project .name (), newProjectExecutors );
123
- log .info (
124
- "project: " + project .name () + " newProjectExecutors: " + newProjectExecutors .keySet ());
117
+ log .info ("project: " + project .name () + " newProjectExecutors: " + newProjectExecutors .keySet ());
125
118
return !executers .get (project .name ()).isEmpty ();
126
119
}
127
120
@@ -134,23 +127,17 @@ private void stopNodes(String project, Map<NodeInfo, PeriodicExecuter> map) {
134
127
}
135
128
136
129
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 ());
143
131
}
144
132
145
133
private PeriodicExecuter startExecuter (ProjectJson project , NodeInfo nodeJson ) {
146
134
log .info ("Starting monitor thread for project " + project .name () + " node " + nodeJson );
147
135
Task task ;
148
- CollectorsRunner collectorsTask = collectorsRunnerFactory
149
- .create (project .name (), nodeJson );
136
+ CollectorsRunner collectorsTask = collectorsRunnerFactory .create (project .name (), nodeJson );
150
137
collectorsTask .init ();
151
138
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 ());
154
141
log .info ("starting 1executor " + periodicExecuter .name ());
155
142
periodicExecuter .runInThread ();
156
143
return periodicExecuter ;
0 commit comments