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
Showing
2 changed files
with
14 additions
and
31 deletions
... | @@ -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 | } | ... | ... |
-
Please register or login to post a comment