11package codeine .nodes ;
22
3- import codeine .PeerStatusChangedUpdater ;
4- import codeine .SnoozeKeeper ;
53import codeine .api .NodeInfo ;
64import codeine .collectors .CollectorsRunner ;
75import codeine .collectors .CollectorsRunnerFactory ;
86import codeine .configuration .IConfigurationManager ;
9- import codeine .configuration .PathHelper ;
107import codeine .executer .PeriodicExecuter ;
118import codeine .executer .Task ;
12- import codeine .jsons .global .GlobalConfigurationJsonStore ;
9+ import codeine .jsons .global .GlobalConfigurationJson ;
1310import codeine .jsons .nodes .NodesManager ;
1411import codeine .jsons .peer_status .PeerStatus ;
1512import codeine .jsons .project .ProjectJson ;
16- import codeine .mail .MailSender ;
17- import codeine .mail .NotificationDeliverToDatabase ;
1813import codeine .utils .network .InetUtils ;
1914import com .google .common .collect .Lists ;
2015import 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