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