From bd295cd1cdfa05abd9b13958230976b5453995aa Mon Sep 17 00:00:00 2001 From: Jian Li Date: Sun, 22 Jul 2018 11:53:57 +0900 Subject: [PATCH] Fix: resolve exception during vtap and telemetry app deactivation Change-Id: I7b0f00467759bec1f6344e75d0c0ef40b13e5dd7 --- .../impl/StatsFlowRuleManager.java | 13 ++++--------- .../openstackvtap/impl/OpenstackVtapManager.java | 2 +- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java index a7ead8e491..3a92bdf0ce 100644 --- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java +++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/impl/StatsFlowRuleManager.java @@ -28,7 +28,6 @@ import org.onlab.packet.IpAddress; import org.onlab.packet.IpPrefix; import org.onlab.packet.MacAddress; import org.onlab.packet.VlanId; -import org.onlab.util.SharedScheduledExecutorService; import org.onlab.util.SharedScheduledExecutors; import org.onosproject.cfg.ComponentConfigService; import org.onosproject.core.ApplicationId; @@ -180,7 +179,6 @@ public class StatsFlowRuleManager implements StatsFlowRuleAdminService { private ApplicationId appId; private TelemetryCollector collector; - private SharedScheduledExecutorService executor; private ScheduledFuture result; private final Set gFlowInfoSet = Sets.newHashSet(); @@ -196,21 +194,17 @@ public class StatsFlowRuleManager implements StatsFlowRuleAdminService { @Activate protected void activate() { appId = coreService.registerApplication(OPENSTACK_TELEMETRY_APP_ID); - componentConfigService.registerProperties(getClass()); - executor = SharedScheduledExecutors.getSingleThreadExecutor(); - - this.start(); + start(); log.info("Started"); } @Deactivate protected void deactivate() { - componentConfigService.unregisterProperties(getClass(), false); - flowRuleService.removeFlowRulesById(appId); + stop(); log.info("Stopped"); } @@ -227,7 +221,8 @@ public class StatsFlowRuleManager implements StatsFlowRuleAdminService { log.info("Start publishing thread"); collector = new TelemetryCollector(); - result = executor.scheduleAtFixedRate(collector, INITIAL_DELAY, + result = SharedScheduledExecutors.getSingleThreadExecutor() + .scheduleAtFixedRate(collector, INITIAL_DELAY, REFRESH_INTERVAL, TIME_UNIT_SECOND, RECOVER_FROM_FAILURE); } diff --git a/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java b/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java index 1e9d7c9573..02a6579c3b 100644 --- a/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java +++ b/apps/openstackvtap/app/src/main/java/org/onosproject/openstackvtap/impl/OpenstackVtapManager.java @@ -505,7 +505,7 @@ public class OpenstackVtapManager } } - flowRuleService.removeFlowRules((FlowRule[]) purgedRules.toArray()); + flowRuleService.removeFlowRules(purgedRules.toArray(new FlowRule[0])); groupService.getGroups(deviceId, appId).forEach(group -> { groupService.removeGroup(deviceId, group.appCookie(), appId);