72 |
|
} |
73 |
|
} |
74 |
|
|
75 |
< |
public synchronized void analysePacket(XMLPacket packet) { |
75 |
> |
public void analysePacket(XMLPacket packet) { |
76 |
|
if (packet.getParam("packet.attributes.type").equals("heartbeat")) { |
77 |
|
String source = packet.getParam("packet.attributes.machine_name"); |
78 |
|
if (!_hosts.containsKey(source)) { |
79 |
< |
HashMap registerHash = new HashMap(); |
80 |
< |
registerHash.put(source, new Register(source, _name, 1)); |
81 |
< |
_hosts.put(source, new HeartbeatHolder(registerHash)); |
79 |
> |
synchronized(this) { |
80 |
> |
HashMap registerHash = new HashMap(); |
81 |
> |
registerHash.put(source, new Register(source, _name, 1)); |
82 |
> |
_hosts.put(source, new HeartbeatHolder(registerHash)); |
83 |
> |
} |
84 |
|
} |
85 |
|
HeartbeatHolder lastHeartbeat = (HeartbeatHolder) _hosts.get(source); |
86 |
|
lastHeartbeat.setLastHeartbeat(System.currentTimeMillis()/1000); |
135 |
|
// time since last heartbeat (seconds) |
136 |
|
long timeSinceLastHB = (System.currentTimeMillis()/1000) - lastHeartbeat; |
137 |
|
// time since (or until if negative) the expected heartbeat |
138 |
< |
long timeSinceExpectedHB = timeSinceLastHB + (long) hostHBinterval; |
138 |
> |
long timeSinceExpectedHB = timeSinceLastHB - (long) hostHBinterval; |
139 |
|
|
140 |
|
// best do a check in case the expected heartbeat is in the future |
141 |
|
if(timeSinceExpectedHB < 0) { |