Github user srdo commented on a diff in the pull request:
https://github.com/apache/storm/pull/2764#discussion_r209044589
--- Diff:
storm-server/src/main/java/org/apache/storm/daemon/nimbus/Nimbus.java ---
@@ -1984,11 +2074,13 @@ private int fragmentedCpu() {
Cluster cluster = new Cluster(inimbus, supervisors,
topoToSchedAssignment, topologies, conf);
cluster.setStatusMap(idToSchedStatus.get());
- long beforeSchedule = System.currentTimeMillis();
+ schedulingStartTime.set(Time.nanoTime());
scheduler.schedule(topologies, cluster);
- long scheduleTimeElapsedMs = System.currentTimeMillis() -
beforeSchedule;
- LOG.debug("Scheduling took {} ms for {} topologies",
scheduleTimeElapsedMs, topologies.getTopologies().size());
- scheduleTopologyTimeMs.update(scheduleTimeElapsedMs);
+ //Will compiler optimize the order of evalutation and cause race
condition?
--- End diff --
Right, that makes sense. I don't think it requires reordering though, the
sequence you posted can happen without the compiler reordering anything.
I don't think it really hurts anything to have this race, but maybe we
should consider removing the longest update in the gauge. Unless the scheduler
is outright hanging, I'm not sure what the value is for us to report a partial
measurement like that?
---