Thomas Vachuska
Committed by Gerrit Code Review

Aha! Fixed a phantom exception that would appear on shutdown; we must first clos…

…e the channel group and only then shutdown the executors.

Change-Id: I43cba836321a156023a7ab2dbd3b937867ffd5c5
...@@ -16,16 +16,6 @@ ...@@ -16,16 +16,6 @@
16 16
17 package org.onosproject.openflow.controller.driver; 17 package org.onosproject.openflow.controller.driver;
18 18
19 -import java.io.IOException;
20 -import java.net.InetSocketAddress;
21 -import java.net.SocketAddress;
22 -import java.util.ArrayList;
23 -import java.util.Collections;
24 -import java.util.List;
25 -import java.util.concurrent.RejectedExecutionException;
26 -import java.util.concurrent.atomic.AtomicInteger;
27 -import java.util.stream.Collectors;
28 -
29 import org.jboss.netty.channel.Channel; 19 import org.jboss.netty.channel.Channel;
30 import org.onlab.packet.IpAddress; 20 import org.onlab.packet.IpAddress;
31 import org.onosproject.net.driver.AbstractHandlerBehaviour; 21 import org.onosproject.net.driver.AbstractHandlerBehaviour;
...@@ -48,6 +38,15 @@ import org.projectfloodlight.openflow.protocol.OFVersion; ...@@ -48,6 +38,15 @@ import org.projectfloodlight.openflow.protocol.OFVersion;
48 import org.slf4j.Logger; 38 import org.slf4j.Logger;
49 import org.slf4j.LoggerFactory; 39 import org.slf4j.LoggerFactory;
50 40
41 +import java.io.IOException;
42 +import java.net.InetSocketAddress;
43 +import java.net.SocketAddress;
44 +import java.util.ArrayList;
45 +import java.util.Collections;
46 +import java.util.List;
47 +import java.util.concurrent.atomic.AtomicInteger;
48 +import java.util.stream.Collectors;
49 +
51 /** 50 /**
52 * An abstract representation of an OpenFlow switch. Can be extended by others 51 * An abstract representation of an OpenFlow switch. Can be extended by others
53 * to serve as a base for their vendor specific representation of a switch. 52 * to serve as a base for their vendor specific representation of a switch.
...@@ -57,8 +56,6 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour ...@@ -57,8 +56,6 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour
57 56
58 protected final Logger log = LoggerFactory.getLogger(getClass()); 57 protected final Logger log = LoggerFactory.getLogger(getClass());
59 58
60 - private static final String SHUTDOWN_MSG = "Worker has already been shutdown";
61 -
62 private Channel channel; 59 private Channel channel;
63 protected String channelId; 60 protected String channelId;
64 61
...@@ -100,28 +97,14 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour ...@@ -100,28 +97,14 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour
100 @Override 97 @Override
101 public final void sendMsg(OFMessage m) { 98 public final void sendMsg(OFMessage m) {
102 if (role == RoleState.MASTER) { 99 if (role == RoleState.MASTER) {
103 - try {
104 channel.write(Collections.singletonList(m)); 100 channel.write(Collections.singletonList(m));
105 - } catch (RejectedExecutionException e) {
106 - log.warn(e.getMessage());
107 - if (!e.getMessage().contains(SHUTDOWN_MSG)) {
108 - throw e;
109 - }
110 - }
111 } 101 }
112 } 102 }
113 103
114 @Override 104 @Override
115 public final void sendMsg(List<OFMessage> msgs) { 105 public final void sendMsg(List<OFMessage> msgs) {
116 if (role == RoleState.MASTER) { 106 if (role == RoleState.MASTER) {
117 - try {
118 channel.write(msgs); 107 channel.write(msgs);
119 - } catch (RejectedExecutionException e) {
120 - log.warn(e.getMessage());
121 - if (!e.getMessage().contains(SHUTDOWN_MSG)) {
122 - throw e;
123 - }
124 - }
125 } 108 }
126 } 109 }
127 110
...@@ -150,7 +133,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour ...@@ -150,7 +133,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour
150 @Override 133 @Override
151 public final void setConnected(boolean connected) { 134 public final void setConnected(boolean connected) {
152 this.connected = connected; 135 this.connected = connected;
153 - }; 136 + }
154 137
155 @Override 138 @Override
156 public final void setChannel(Channel channel) { 139 public final void setChannel(Channel channel) {
...@@ -165,7 +148,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour ...@@ -165,7 +148,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour
165 channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort(); 148 channelId = '[' + ipAddress.toString() + "]:" + inetAddress.getPort();
166 } 149 }
167 } 150 }
168 - }; 151 + }
169 152
170 @Override 153 @Override
171 public String channelId() { 154 public String channelId() {
...@@ -180,7 +163,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour ...@@ -180,7 +163,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour
180 @Override 163 @Override
181 public final long getId() { 164 public final long getId() {
182 return this.dpid.value(); 165 return this.dpid.value();
183 - }; 166 + }
184 167
185 @Override 168 @Override
186 public final String getStringId() { 169 public final String getStringId() {
...@@ -223,7 +206,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour ...@@ -223,7 +206,7 @@ public abstract class AbstractOpenFlowSwitch extends AbstractHandlerBehaviour
223 @Override 206 @Override
224 public RoleState getRole() { 207 public RoleState getRole() {
225 return role; 208 return role;
226 - }; 209 + }
227 210
228 @Override 211 @Override
229 public final boolean connectSwitch() { 212 public final boolean connectSwitch() {
......
...@@ -232,8 +232,8 @@ public class Controller { ...@@ -232,8 +232,8 @@ public class Controller {
232 232
233 public void stop() { 233 public void stop() {
234 log.info("Stopping OpenFlow IO"); 234 log.info("Stopping OpenFlow IO");
235 - execFactory.shutdown();
236 cg.close(); 235 cg.close();
236 + execFactory.shutdown();
237 } 237 }
238 238
239 } 239 }
......