Update gRPC
- Update gRPC and it's dependencies to 0.13.2
- Use pre-defined default port if not specified by URI
- Cosmetic fixes
Change-Id: Iac8c3ba4c6fe1b5925ea8832e61d313adfad6f71
diff --git a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java
index 630b64d..766dd1a 100644
--- a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java
+++ b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/DeviceProviderRegistryClientProxy.java
@@ -55,7 +55,7 @@
// Create session
DeviceProviderServiceClientProxy pService = new DeviceProviderServiceClientProxy(provider, channel);
- log.debug("Created DeviceProviderServiceClientProxy", pService);
+ log.debug("Created DeviceProviderServiceClientProxy {}", pService);
DeviceProviderServiceClientProxy old = pServices.put(provider, pService);
if (old != null) {
@@ -68,7 +68,7 @@
@Override
public synchronized void unregister(DeviceProvider provider) {
DeviceProviderServiceClientProxy pService = pServices.remove(provider);
- log.debug("Unregistering DeviceProviderServiceClientProxy", pService);
+ log.debug("Unregistering DeviceProviderServiceClientProxy {}", pService);
super.unregister(provider);
if (pService != null) {
pService.shutdown();
diff --git a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java
index 71a83c9..955a657 100644
--- a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java
+++ b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceProvider.java
@@ -58,7 +58,7 @@
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected RemoteServiceProviderRegistry rpcRegistry;
- private Map<URI, ManagedChannel> channels = new ConcurrentHashMap<>();
+ private final Map<URI, ManagedChannel> channels = new ConcurrentHashMap<>();
private RemoteServiceContextProviderService providerService;
@@ -67,8 +67,8 @@
protected void activate() {
providerService = rpcRegistry.register(this);
- // FIXME remove me. test code to see if gRPC loads in karaf
- //getChannel(URI.create("grpc://localhost:8080"));
+ // Uncomment to test if gRPC can be loaded in karaf
+ //getChannel(URI.create("grpc://localhost:11984"));
log.info("Started");
}
@@ -111,7 +111,11 @@
private ManagedChannel createChannel(URI uri) {
log.debug("Creating channel for {}", uri);
- return NettyChannelBuilder.forAddress(uri.getHost(), uri.getPort())
+ int port = GrpcRemoteServiceServer.DEFAULT_LISTEN_PORT;
+ if (uri.getPort() != -1) {
+ port = uri.getPort();
+ }
+ return NettyChannelBuilder.forAddress(uri.getHost(), port)
.negotiationType(NegotiationType.PLAINTEXT)
.build();
}
diff --git a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java
index 77d1cbe..f14b4ef 100644
--- a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java
+++ b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/GrpcRemoteServiceServer.java
@@ -165,6 +165,7 @@
* Unregisters all registered LinkProviders.
*/
private synchronized void unregisterLinkProviders() {
+ // TODO remove all links registered by these providers
linkProviders.values().forEach(linkProviderRegistry::unregister);
linkProviders.clear();
linkProviderServices.clear();
@@ -250,6 +251,7 @@
// TODO Do we care about provider name?
pairedProvider.setProviderId(new ProviderId(registerProvider.getProviderScheme(), RPC_PROVIDER_NAME));
registeredProviders.add(pairedProvider);
+ log.info("registering DeviceProvider {} via gRPC", pairedProvider.id());
deviceProviderService = deviceProviderRegistry.register(pairedProvider);
break;
@@ -319,8 +321,13 @@
@Override
public void onError(Throwable e) {
log.error("DeviceProviderServiceServerProxy#onError", e);
- deviceProviderRegistry.unregister(pairedProvider);
- registeredProviders.remove(pairedProvider);
+ if (pairedProvider != null) {
+ // TODO call deviceDisconnected against all devices
+ // registered for this provider scheme
+ log.info("unregistering DeviceProvider {} via gRPC", pairedProvider.id());
+ deviceProviderRegistry.unregister(pairedProvider);
+ registeredProviders.remove(pairedProvider);
+ }
// TODO What is the proper clean up for bi-di stream on error?
// sample suggests no-op
toDeviceProvider.onError(e);
@@ -364,6 +371,7 @@
/**
* Registers RPC stream in other direction.
+ *
* @param deviceProviderServiceProxy {@link DeviceProviderServiceServerProxy}
*/
void pair(DeviceProviderServiceServerProxy deviceProviderServiceProxy) {
diff --git a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java
index 80322dc..bf35ed2 100644
--- a/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java
+++ b/incubator/rpc-grpc/src/main/java/org/onosproject/incubator/rpc/grpc/LinkProviderServiceServerProxy.java
@@ -51,6 +51,9 @@
private final GrpcRemoteServiceServer server;
+ // TODO implement aging mechanism to automatically remove
+ // stale links reported by dead client, etc.
+
LinkProviderServiceServerProxy(GrpcRemoteServiceServer server) {
this.server = checkNotNull(server);
}