Committed by
Gerrit Code Review
Bug fix: make sure that divisor is non-zero value
Change-Id: I7214ebf552ba60db149db2b4edbb90f59d3bdd16
Showing
2 changed files
with
9 additions
and
0 deletions
... | @@ -28,6 +28,7 @@ import org.onosproject.cpman.message.ControlMessageProviderService; | ... | @@ -28,6 +28,7 @@ import org.onosproject.cpman.message.ControlMessageProviderService; |
28 | import org.onosproject.net.DeviceId; | 28 | import org.onosproject.net.DeviceId; |
29 | import org.projectfloodlight.openflow.protocol.OFMessage; | 29 | import org.projectfloodlight.openflow.protocol.OFMessage; |
30 | import org.projectfloodlight.openflow.protocol.OFType; | 30 | import org.projectfloodlight.openflow.protocol.OFType; |
31 | +import org.slf4j.Logger; | ||
31 | 32 | ||
32 | import java.util.ArrayList; | 33 | import java.util.ArrayList; |
33 | import java.util.Collection; | 34 | import java.util.Collection; |
... | @@ -36,12 +37,15 @@ import java.util.Map; | ... | @@ -36,12 +37,15 @@ import java.util.Map; |
36 | import java.util.Set; | 37 | import java.util.Set; |
37 | 38 | ||
38 | import static org.onosproject.provider.of.message.impl.OpenFlowControlMessageMapper.lookupControlMessageType; | 39 | import static org.onosproject.provider.of.message.impl.OpenFlowControlMessageMapper.lookupControlMessageType; |
40 | +import static org.slf4j.LoggerFactory.getLogger; | ||
39 | 41 | ||
40 | /** | 42 | /** |
41 | * Collects the OpenFlow messages and aggregates using MetricsService. | 43 | * Collects the OpenFlow messages and aggregates using MetricsService. |
42 | */ | 44 | */ |
43 | public class OpenFlowControlMessageAggregator implements Runnable { | 45 | public class OpenFlowControlMessageAggregator implements Runnable { |
44 | 46 | ||
47 | + private final Logger log = getLogger(getClass()); | ||
48 | + | ||
45 | private static final Set<OFType> OF_TYPE_SET = | 49 | private static final Set<OFType> OF_TYPE_SET = |
46 | ImmutableSet.of(OFType.PACKET_IN, OFType.PACKET_OUT, OFType.FLOW_MOD, | 50 | ImmutableSet.of(OFType.PACKET_IN, OFType.PACKET_OUT, OFType.FLOW_MOD, |
47 | OFType.FLOW_REMOVED, OFType.STATS_REQUEST, OFType.STATS_REPLY); | 51 | OFType.FLOW_REMOVED, OFType.STATS_REQUEST, OFType.STATS_REPLY); |
... | @@ -103,8 +107,10 @@ public class OpenFlowControlMessageAggregator implements Runnable { | ... | @@ -103,8 +107,10 @@ public class OpenFlowControlMessageAggregator implements Runnable { |
103 | new DefaultControlMessage(lookupControlMessageType(type), | 107 | new DefaultControlMessage(lookupControlMessageType(type), |
104 | getLoad(type), getRate(type), getCount(type), | 108 | getLoad(type), getRate(type), getCount(type), |
105 | System.currentTimeMillis()))); | 109 | System.currentTimeMillis()))); |
110 | + log.debug("sent aggregated control message"); | ||
106 | providerService.updateStatsInfo(deviceId, | 111 | providerService.updateStatsInfo(deviceId, |
107 | Collections.unmodifiableCollection(controlMessages)); | 112 | Collections.unmodifiableCollection(controlMessages)); |
113 | + controlMessages.clear(); | ||
108 | } | 114 | } |
109 | 115 | ||
110 | /** | 116 | /** |
... | @@ -114,6 +120,9 @@ public class OpenFlowControlMessageAggregator implements Runnable { | ... | @@ -114,6 +120,9 @@ public class OpenFlowControlMessageAggregator implements Runnable { |
114 | * @return load value | 120 | * @return load value |
115 | */ | 121 | */ |
116 | private long getLoad(OFType type) { | 122 | private long getLoad(OFType type) { |
123 | + if (countMeterMap.get(type).getOneMinuteRate() == 0D) { | ||
124 | + return 0L; | ||
125 | + } | ||
117 | return (long) rateMeterMap.get(type).getOneMinuteRate() / | 126 | return (long) rateMeterMap.get(type).getOneMinuteRate() / |
118 | (long) countMeterMap.get(type).getOneMinuteRate(); | 127 | (long) countMeterMap.get(type).getOneMinuteRate(); |
119 | } | 128 | } | ... | ... |
-
Please register or login to post a comment