Removed usage of deprecated ClusterCommunicationService APIs
Change-Id: Id306dadad48d1bad7b3fbde3a40ba3e0fdac4cbc
Showing
3 changed files
with
50 additions
and
86 deletions
... | @@ -17,6 +17,7 @@ package org.onosproject.store.app; | ... | @@ -17,6 +17,7 @@ package org.onosproject.store.app; |
17 | 17 | ||
18 | import com.google.common.base.Charsets; | 18 | import com.google.common.base.Charsets; |
19 | import com.google.common.collect.ImmutableSet; | 19 | import com.google.common.collect.ImmutableSet; |
20 | + | ||
20 | import org.apache.felix.scr.annotations.Activate; | 21 | import org.apache.felix.scr.annotations.Activate; |
21 | import org.apache.felix.scr.annotations.Component; | 22 | import org.apache.felix.scr.annotations.Component; |
22 | import org.apache.felix.scr.annotations.Deactivate; | 23 | import org.apache.felix.scr.annotations.Deactivate; |
... | @@ -39,8 +40,6 @@ import org.onosproject.core.ApplicationIdStore; | ... | @@ -39,8 +40,6 @@ import org.onosproject.core.ApplicationIdStore; |
39 | import org.onosproject.core.DefaultApplication; | 40 | import org.onosproject.core.DefaultApplication; |
40 | import org.onosproject.core.Permission; | 41 | import org.onosproject.core.Permission; |
41 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; | 42 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; |
42 | -import org.onosproject.store.cluster.messaging.ClusterMessage; | ||
43 | -import org.onosproject.store.cluster.messaging.ClusterMessageHandler; | ||
44 | import org.onosproject.store.cluster.messaging.MessageSubject; | 43 | import org.onosproject.store.cluster.messaging.MessageSubject; |
45 | import org.onosproject.store.serializers.KryoNamespaces; | 44 | import org.onosproject.store.serializers.KryoNamespaces; |
46 | import org.onosproject.store.service.EventuallyConsistentMap; | 45 | import org.onosproject.store.service.EventuallyConsistentMap; |
... | @@ -48,10 +47,12 @@ import org.onosproject.store.service.EventuallyConsistentMapEvent; | ... | @@ -48,10 +47,12 @@ import org.onosproject.store.service.EventuallyConsistentMapEvent; |
48 | import org.onosproject.store.service.EventuallyConsistentMapListener; | 47 | import org.onosproject.store.service.EventuallyConsistentMapListener; |
49 | import org.onosproject.store.service.LogicalClockService; | 48 | import org.onosproject.store.service.LogicalClockService; |
50 | import org.onosproject.store.service.MultiValuedTimestamp; | 49 | import org.onosproject.store.service.MultiValuedTimestamp; |
50 | +import org.onosproject.store.service.StorageException; | ||
51 | import org.onosproject.store.service.StorageService; | 51 | import org.onosproject.store.service.StorageService; |
52 | import org.slf4j.Logger; | 52 | import org.slf4j.Logger; |
53 | 53 | ||
54 | import java.io.ByteArrayInputStream; | 54 | import java.io.ByteArrayInputStream; |
55 | +import java.io.IOException; | ||
55 | import java.io.InputStream; | 56 | import java.io.InputStream; |
56 | import java.util.Set; | 57 | import java.util.Set; |
57 | import java.util.concurrent.CountDownLatch; | 58 | import java.util.concurrent.CountDownLatch; |
... | @@ -126,7 +127,17 @@ public class GossipApplicationStore extends ApplicationArchive | ... | @@ -126,7 +127,17 @@ public class GossipApplicationStore extends ApplicationArchive |
126 | messageHandlingExecutor = Executors.newSingleThreadExecutor( | 127 | messageHandlingExecutor = Executors.newSingleThreadExecutor( |
127 | groupedThreads("onos/store/app", "message-handler")); | 128 | groupedThreads("onos/store/app", "message-handler")); |
128 | 129 | ||
129 | - clusterCommunicator.addSubscriber(APP_BITS_REQUEST, new InternalBitServer(), messageHandlingExecutor); | 130 | + clusterCommunicator.<String, byte[]>addSubscriber(APP_BITS_REQUEST, |
131 | + bytes -> new String(bytes, Charsets.UTF_8), | ||
132 | + name -> { | ||
133 | + try { | ||
134 | + return toByteArray(getApplicationInputStream(name)); | ||
135 | + } catch (IOException e) { | ||
136 | + throw new StorageException(e); | ||
137 | + } | ||
138 | + }, | ||
139 | + Function.identity(), | ||
140 | + messageHandlingExecutor); | ||
130 | 141 | ||
131 | // FIXME: Consider consolidating into a single map. | 142 | // FIXME: Consider consolidating into a single map. |
132 | 143 | ||
... | @@ -394,21 +405,6 @@ public class GossipApplicationStore extends ApplicationArchive | ... | @@ -394,21 +405,6 @@ public class GossipApplicationStore extends ApplicationArchive |
394 | } | 405 | } |
395 | 406 | ||
396 | /** | 407 | /** |
397 | - * Responder to requests for application bits. | ||
398 | - */ | ||
399 | - private class InternalBitServer implements ClusterMessageHandler { | ||
400 | - @Override | ||
401 | - public void handle(ClusterMessage message) { | ||
402 | - String name = new String(message.payload(), Charsets.UTF_8); | ||
403 | - try { | ||
404 | - message.respond(toByteArray(getApplicationInputStream(name))); | ||
405 | - } catch (Exception e) { | ||
406 | - log.debug("Unable to read bits for application {}", name); | ||
407 | - } | ||
408 | - } | ||
409 | - } | ||
410 | - | ||
411 | - /** | ||
412 | * Prunes applications which are not in the map, but are on disk. | 408 | * Prunes applications which are not in the map, but are on disk. |
413 | */ | 409 | */ |
414 | private void pruneUninstalledApps() { | 410 | private void pruneUninstalledApps() { | ... | ... |
... | @@ -60,8 +60,6 @@ import org.onosproject.net.group.StoredGroupBucketEntry; | ... | @@ -60,8 +60,6 @@ import org.onosproject.net.group.StoredGroupBucketEntry; |
60 | import org.onosproject.net.group.StoredGroupEntry; | 60 | import org.onosproject.net.group.StoredGroupEntry; |
61 | import org.onosproject.store.AbstractStore; | 61 | import org.onosproject.store.AbstractStore; |
62 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; | 62 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; |
63 | -import org.onosproject.store.cluster.messaging.ClusterMessage; | ||
64 | -import org.onosproject.store.cluster.messaging.ClusterMessageHandler; | ||
65 | import org.onosproject.store.service.MultiValuedTimestamp; | 63 | import org.onosproject.store.service.MultiValuedTimestamp; |
66 | import org.onosproject.store.serializers.DeviceIdSerializer; | 64 | import org.onosproject.store.serializers.DeviceIdSerializer; |
67 | import org.onosproject.store.serializers.KryoNamespaces; | 65 | import org.onosproject.store.serializers.KryoNamespaces; |
... | @@ -198,10 +196,11 @@ public class DistributedGroupStore | ... | @@ -198,10 +196,11 @@ public class DistributedGroupStore |
198 | newFixedThreadPool(MESSAGE_HANDLER_THREAD_POOL_SIZE, | 196 | newFixedThreadPool(MESSAGE_HANDLER_THREAD_POOL_SIZE, |
199 | groupedThreads("onos/store/group", | 197 | groupedThreads("onos/store/group", |
200 | "message-handlers")); | 198 | "message-handlers")); |
201 | - clusterCommunicator. | 199 | + |
202 | - addSubscriber(GroupStoreMessageSubjects.REMOTE_GROUP_OP_REQUEST, | 200 | + clusterCommunicator.addSubscriber(GroupStoreMessageSubjects.REMOTE_GROUP_OP_REQUEST, |
203 | - new ClusterGroupMsgHandler(), | 201 | + kryoBuilder.build()::deserialize, |
204 | - messageHandlingExecutor); | 202 | + this::process, |
203 | + messageHandlingExecutor); | ||
205 | 204 | ||
206 | log.debug("Creating EC map groupstorekeymap"); | 205 | log.debug("Creating EC map groupstorekeymap"); |
207 | EventuallyConsistentMapBuilder<GroupStoreKeyMapKey, StoredGroupEntry> | 206 | EventuallyConsistentMapBuilder<GroupStoreKeyMapKey, StoredGroupEntry> |
... | @@ -970,45 +969,27 @@ public class DistributedGroupStore | ... | @@ -970,45 +969,27 @@ public class DistributedGroupStore |
970 | } | 969 | } |
971 | } | 970 | } |
972 | } | 971 | } |
973 | - /** | 972 | + |
974 | - * Message handler to receive messages from group subsystems of | 973 | + private void process(GroupStoreMessage groupOp) { |
975 | - * other cluster members. | 974 | + log.debug("Received remote group operation {} request for device {}", |
976 | - */ | 975 | + groupOp.type(), |
977 | - private final class ClusterGroupMsgHandler | 976 | + groupOp.deviceId()); |
978 | - implements ClusterMessageHandler { | 977 | + if (!mastershipService.isLocalMaster(groupOp.deviceId())) { |
979 | - @Override | 978 | + log.warn("This node is not MASTER for device {}", groupOp.deviceId()); |
980 | - public void handle(ClusterMessage message) { | 979 | + return; |
981 | - if (message.subject().equals( | 980 | + } |
982 | - GroupStoreMessageSubjects.REMOTE_GROUP_OP_REQUEST)) { | 981 | + if (groupOp.type() == GroupStoreMessage.Type.ADD) { |
983 | - GroupStoreMessage groupOp = kryoBuilder. | 982 | + storeGroupDescriptionInternal(groupOp.groupDesc()); |
984 | - build().deserialize(message.payload()); | 983 | + } else if (groupOp.type() == GroupStoreMessage.Type.UPDATE) { |
985 | - log.debug("received remote group operation {} request for device {}", | 984 | + updateGroupDescriptionInternal(groupOp.deviceId(), |
986 | - groupOp.type(), | 985 | + groupOp.appCookie(), |
987 | - groupOp.deviceId()); | 986 | + groupOp.updateType(), |
988 | - if (mastershipService. | 987 | + groupOp.updateBuckets(), |
989 | - getLocalRole(groupOp.deviceId()) != | 988 | + groupOp.newAppCookie()); |
990 | - MastershipRole.MASTER) { | 989 | + } else if (groupOp.type() == GroupStoreMessage.Type.DELETE) { |
991 | - log.warn("ClusterGroupMsgHandler: This node is not " | 990 | + deleteGroupDescriptionInternal(groupOp.deviceId(), |
992 | - + "MASTER for device {}", groupOp.deviceId()); | 991 | + groupOp.appCookie()); |
993 | - return; | 992 | + } |
994 | - } | ||
995 | - if (groupOp.type() == GroupStoreMessage.Type.ADD) { | ||
996 | - storeGroupDescriptionInternal(groupOp.groupDesc()); | ||
997 | - } else if (groupOp.type() == GroupStoreMessage.Type.UPDATE) { | ||
998 | - updateGroupDescriptionInternal(groupOp.deviceId(), | ||
999 | - groupOp.appCookie(), | ||
1000 | - groupOp.updateType(), | ||
1001 | - groupOp.updateBuckets(), | ||
1002 | - groupOp.newAppCookie()); | ||
1003 | - } else if (groupOp.type() == GroupStoreMessage.Type.DELETE) { | ||
1004 | - deleteGroupDescriptionInternal(groupOp.deviceId(), | ||
1005 | - groupOp.appCookie()); | ||
1006 | - } | ||
1007 | - } else { | ||
1008 | - log.warn("ClusterGroupMsgHandler: Unknown remote message type {}", | ||
1009 | - message.subject()); | ||
1010 | - } | ||
1011 | - } | ||
1012 | } | 993 | } |
1013 | 994 | ||
1014 | /** | 995 | /** | ... | ... |
... | @@ -35,8 +35,6 @@ import org.onosproject.net.packet.PacketStore; | ... | @@ -35,8 +35,6 @@ import org.onosproject.net.packet.PacketStore; |
35 | import org.onosproject.net.packet.PacketStoreDelegate; | 35 | import org.onosproject.net.packet.PacketStoreDelegate; |
36 | import org.onosproject.store.AbstractStore; | 36 | import org.onosproject.store.AbstractStore; |
37 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; | 37 | import org.onosproject.store.cluster.messaging.ClusterCommunicationService; |
38 | -import org.onosproject.store.cluster.messaging.ClusterMessage; | ||
39 | -import org.onosproject.store.cluster.messaging.ClusterMessageHandler; | ||
40 | import org.onosproject.store.cluster.messaging.MessageSubject; | 38 | import org.onosproject.store.cluster.messaging.MessageSubject; |
41 | import org.onosproject.store.serializers.KryoNamespaces; | 39 | import org.onosproject.store.serializers.KryoNamespaces; |
42 | import org.onosproject.store.serializers.KryoSerializer; | 40 | import org.onosproject.store.serializers.KryoSerializer; |
... | @@ -104,9 +102,10 @@ public class DistributedPacketStore | ... | @@ -104,9 +102,10 @@ public class DistributedPacketStore |
104 | MESSAGE_HANDLER_THREAD_POOL_SIZE, | 102 | MESSAGE_HANDLER_THREAD_POOL_SIZE, |
105 | groupedThreads("onos/store/packet", "message-handlers")); | 103 | groupedThreads("onos/store/packet", "message-handlers")); |
106 | 104 | ||
107 | - communicationService.addSubscriber(PACKET_OUT_SUBJECT, | 105 | + communicationService.<OutboundPacket>addSubscriber(PACKET_OUT_SUBJECT, |
108 | - new InternalClusterMessageHandler(), | 106 | + SERIALIZER::decode, |
109 | - messageHandlingExecutor); | 107 | + packet -> notifyDelegate(new PacketEvent(Type.EMIT, packet)), |
108 | + messageHandlingExecutor); | ||
110 | 109 | ||
111 | tracker = new PacketRequestTracker(); | 110 | tracker = new PacketRequestTracker(); |
112 | 111 | ||
... | @@ -134,9 +133,12 @@ public class DistributedPacketStore | ... | @@ -134,9 +133,12 @@ public class DistributedPacketStore |
134 | return; | 133 | return; |
135 | } | 134 | } |
136 | 135 | ||
137 | - // TODO check unicast return value | 136 | + communicationService.unicast(packet, PACKET_OUT_SUBJECT, SERIALIZER::encode, master) |
138 | - communicationService.unicast(packet, PACKET_OUT_SUBJECT, SERIALIZER::encode, master); | 137 | + .whenComplete((r, error) -> { |
139 | - // error log: log.warn("Failed to send packet-out to {}", master); | 138 | + if (error != null) { |
139 | + log.warn("Failed to send packet-out to {}", master, error); | ||
140 | + } | ||
141 | + }); | ||
140 | } | 142 | } |
141 | 143 | ||
142 | @Override | 144 | @Override |
... | @@ -154,21 +156,6 @@ public class DistributedPacketStore | ... | @@ -154,21 +156,6 @@ public class DistributedPacketStore |
154 | return tracker.requests(); | 156 | return tracker.requests(); |
155 | } | 157 | } |
156 | 158 | ||
157 | - /** | ||
158 | - * Handles incoming cluster messages. | ||
159 | - */ | ||
160 | - private class InternalClusterMessageHandler implements ClusterMessageHandler { | ||
161 | - @Override | ||
162 | - public void handle(ClusterMessage message) { | ||
163 | - if (!message.subject().equals(PACKET_OUT_SUBJECT)) { | ||
164 | - log.warn("Received message with wrong subject: {}", message); | ||
165 | - } | ||
166 | - | ||
167 | - OutboundPacket packet = SERIALIZER.decode(message.payload()); | ||
168 | - notifyDelegate(new PacketEvent(Type.EMIT, packet)); | ||
169 | - } | ||
170 | - } | ||
171 | - | ||
172 | private class PacketRequestTracker { | 159 | private class PacketRequestTracker { |
173 | 160 | ||
174 | private ConsistentMap<TrafficSelector, Set<PacketRequest>> requests; | 161 | private ConsistentMap<TrafficSelector, Set<PacketRequest>> requests; | ... | ... |
-
Please register or login to post a comment