Fix for https://bugs.eclipse.org/bugs/show_bug.cgi?id=574221

and updated top-level feature versions from 3.14.21 to 3.14.22

Change-Id: I4b5ee3489b21000b0583c0e08c54d5c1a1275d7a
diff --git a/doc/bundles/org.eclipse.ecf.doc/pom.xml b/doc/bundles/org.eclipse.ecf.doc/pom.xml
index 36340a4..3df30ac 100644
--- a/doc/bundles/org.eclipse.ecf.doc/pom.xml
+++ b/doc/bundles/org.eclipse.ecf.doc/pom.xml
@@ -30,8 +30,8 @@
                   <additionalArgument>-Xdoclint:none</additionalArgument>
                   <additionalArgument>-splitindex</additionalArgument>
                   <additionalArgument>-use</additionalArgument>
-                  <additionalArgument>-doctitle "Eclipse Communication Framework (ECF) 3.14.21 API"</additionalArgument>
-                  <additionalArgument>-windowtitle "Eclipse Communication Framework (ECF) 3.14.21 API"</additionalArgument>
+                  <additionalArgument>-doctitle "Eclipse Communication Framework (ECF) 3.14.22 API"</additionalArgument>
+                  <additionalArgument>-windowtitle "Eclipse Communication Framework (ECF) 3.14.22 API"</additionalArgument>
                   <additionalArgument>-link https://docs.oracle.com/en/java/javase/11/docs/api/</additionalArgument>
                   <additionalArgument>-link https://docs.osgi.org/javadoc/osgi.core/7.0.0/</additionalArgument>
                   <additionalArgument>-tag 'noimplement:a:Restriction:'</additionalArgument>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF
index ef49a58..daacee4 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.asyncproxy
 Automatic-Module-Name: org.eclipse.ecf.remoteservice.asyncproxy
-Bundle-Version: 2.1.100.qualifier
+Bundle-Version: 2.1.200.qualifier
 Bundle-Vendor: %bundle.provider
 Import-Package: org.eclipse.equinox.concurrent.future,
  org.osgi.util.promise
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/pom.xml b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/pom.xml
index d77e518..0e9a19f 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/pom.xml
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.remoteservice.asyncproxy</artifactId>
-  <version>2.1.100-SNAPSHOT</version>
+  <version>2.1.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java
index 459c348..112ec09 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy.j8/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java
@@ -67,16 +67,20 @@
 			InvocationTargetException {
 		if (returnObject == null)
 			return null;
-		else if (asyncReturnType.isAssignableFrom(Future.class))
-			return ((Future<?>) returnObject).get(timeout, TimeUnit.MILLISECONDS);
-		else if (asyncReturnType.isAssignableFrom(CompletableFuture.class)) 
-			return ((CompletableFuture<?>) returnObject).get(timeout, TimeUnit.MILLISECONDS);
-		else if (asyncReturnType.isAssignableFrom(CompletionStage.class))
-			return ((CompletionStage<?>) returnObject).toCompletableFuture().get(timeout, TimeUnit.MILLISECONDS);
-		else if (asyncReturnType.isAssignableFrom(IFuture.class))
+		else if (asyncReturnType.isAssignableFrom(Future.class)) {
+			Future<?> f = (Future<?>) returnObject;
+			return (timeout == 0L)?f.get():f.get(timeout, TimeUnit.MILLISECONDS);
+		} else if (asyncReturnType.isAssignableFrom(CompletableFuture.class)) {
+			CompletableFuture<?> cf = (CompletableFuture<?>) returnObject;
+			return (timeout == 0L)?cf.get():cf.get(timeout, TimeUnit.MILLISECONDS);
+		} else if (asyncReturnType.isAssignableFrom(CompletionStage.class)) {
+			CompletableFuture<?> cf = ((CompletionStage<?>) returnObject).toCompletableFuture();
+			return (timeout == 0)?cf.get():cf.get(timeout, TimeUnit.MILLISECONDS);
+		} else if (asyncReturnType.isAssignableFrom(IFuture.class)) {
 			return ((IFuture<?>) returnObject).get();
-		else if (asyncReturnType.isAssignableFrom(Promise.class))
+		} else if (asyncReturnType.isAssignableFrom(Promise.class)) {
 			return ((Promise<?>) returnObject).getValue();
+		}
 		return null;
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF
index 0d04d27..7aac297 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %bundle.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice.asyncproxy
 Automatic-Module-Name: org.eclipse.ecf.remoteservice.asyncproxy
-Bundle-Version: 1.1.200.qualifier
+Bundle-Version: 1.1.300.qualifier
 Bundle-Vendor: %bundle.provider
 Import-Package: org.eclipse.equinox.concurrent.future
 Bundle-Localization: bundle
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/pom.xml b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/pom.xml
index 0d4dcb5..183d4a5 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/pom.xml
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/pom.xml
@@ -10,7 +10,7 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.remoteservice.asyncproxy</artifactId>
-  <version>1.1.200-SNAPSHOT</version>
+  <version>1.1.300-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 
   <build>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java
index d8b74b5..0f5ec9b 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice.asyncproxy/src/org/eclipse/ecf/remoteservice/asyncproxy/AsyncReturnUtil.java
@@ -42,10 +42,12 @@
 			InvocationTargetException {
 		if (returnObject == null)
 			return null;
-		else if (asyncReturnType.isAssignableFrom(Future.class))
-			return ((Future<?>) returnObject).get(timeout, TimeUnit.MILLISECONDS);
-		else if (asyncReturnType.isAssignableFrom(IFuture.class))
+		else if (asyncReturnType.isAssignableFrom(Future.class)) {
+			Future<?> f = (Future<?>) returnObject;
+			return (timeout == 0L)?f.get():f.get(timeout, TimeUnit.MILLISECONDS);
+		} else if (asyncReturnType.isAssignableFrom(IFuture.class)) {
 			return ((IFuture<?>) returnObject).get();
+		}
 		return null;
 	}
 
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
index bcb1e39..28fbc94 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Bundle-Name: %plugin.name
 Bundle-SymbolicName: org.eclipse.ecf.remoteservice
 Automatic-Module-Name: org.eclipse.ecf.remoteservice
-Bundle-Version: 8.13.101.qualifier
+Bundle-Version: 8.13.200.qualifier
 Bundle-Activator: org.eclipse.ecf.internal.remoteservice.Activator
 Bundle-Vendor: %plugin.provider
 Bundle-Localization: plugin
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/pom.xml b/framework/bundles/org.eclipse.ecf.remoteservice/pom.xml
index 1e74be0..a2b850d 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/pom.xml
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.remoteservice</artifactId>
-  <version>8.13.101-SNAPSHOT</version>
+  <version>8.13.200-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
diff --git a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
index 367c902..f3a10f2 100644
--- a/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
+++ b/framework/bundles/org.eclipse.ecf.remoteservice/src/org/eclipse/ecf/remoteservice/AbstractRemoteService.java
@@ -715,7 +715,9 @@
 	 * @since 8.13
 	 */
 	public Object callSync(IRemoteCall call, Callable<Object> callable) throws InterruptedException, ExecutionException, TimeoutException {
-		return callAsync(call, callable).get(call.getTimeout(), TimeUnit.MILLISECONDS);
+		long timeout = call.getTimeout();
+		Future<Object> future = callAsync(call, callable);
+		return (timeout == 0) ? future.get() : future.get(timeout, TimeUnit.MILLISECONDS);
 	}
 
 	/**
@@ -738,7 +740,9 @@
 		return getFutureExecutorService(call).submit(new Callable<Object>() {
 			public Object call() throws Exception {
 				try {
-					return getFutureExecutorService(call).submit(callable).get(call.getTimeout(), TimeUnit.MILLISECONDS);
+					long timeout = call.getTimeout();
+					Future<Object> future = getFutureExecutorService(call).submit(callable);
+					return (timeout == 0L) ? future.get() : future.get(timeout, TimeUnit.MILLISECONDS);
 				} catch (InterruptedException e) {
 					throw new InterruptedException("Interrupted calling remote service method=" + call.getMethod()); //$NON-NLS-1$
 				} catch (ExecutionException e) {
@@ -794,7 +798,9 @@
 		getFutureExecutorService(call).submit(new Runnable() {
 			public void run() {
 				try {
-					callback.handleEvent(getFutureExecutorService(call).submit(callable).get(call.getTimeout(), TimeUnit.MILLISECONDS));
+					long timeout = call.getTimeout();
+					Future<IRemoteCallCompleteEvent> future = getFutureExecutorService(call).submit(callable);
+					callback.handleEvent((timeout == 0L) ? future.get() : future.get(timeout, TimeUnit.MILLISECONDS));
 				} catch (InterruptedException e) {
 					callback.handleEvent(createRCCE(null, new InterruptedException("Interrupted calling remote service method=" + call.getMethod()))); //$NON-NLS-1$
 				} catch (ExecutionException e) {
diff --git a/releng/features/org.eclipse.ecf.core/feature.xml b/releng/features/org.eclipse.ecf.core/feature.xml
index 21e5ab2..72d4e33 100644
--- a/releng/features/org.eclipse.ecf.core/feature.xml
+++ b/releng/features/org.eclipse.ecf.core/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.ecf.core"
       label="ECF SDK for Eclipse"
-      version="3.14.21.qualifier"
+      version="3.14.22.qualifier"
       provider-name="%providerName"
       plugin="org.eclipse.ecf"
       license-feature="org.eclipse.license"
diff --git a/releng/features/org.eclipse.ecf.core/pom.xml b/releng/features/org.eclipse.ecf.core/pom.xml
index 4c50e00..e4ee38a 100644
--- a/releng/features/org.eclipse.ecf.core/pom.xml
+++ b/releng/features/org.eclipse.ecf.core/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.core</artifactId>
-  <version>3.14.21-SNAPSHOT</version>
+  <version>3.14.22-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
index eecdee7..24756d5 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.ecf.filetransfer.httpclient4.feature"
       label="%featureName"
-      version="3.14.21.qualifier"
+      version="3.14.22.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="0.0.0">
diff --git a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/pom.xml b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/pom.xml
index bdfe1fa..a6116e6 100644
--- a/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/pom.xml
+++ b/releng/features/org.eclipse.ecf.filetransfer.httpclient4.feature/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.filetransfer.httpclient4.feature</artifactId>
-  <version>3.14.21-SNAPSHOT</version>
+  <version>3.14.22-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
index db77a04..8a2cf16 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.ecf.remoteservice.feature"
       label="ECF Remote Services"
-      version="2.5.201.qualifier"
+      version="2.5.300.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="0.0.0">
@@ -44,14 +44,7 @@
          id="org.eclipse.ecf.remoteservice.asyncproxy"
          download-size="0"
          install-size="0"
-         version="1.1.200.qualifier"
-         unpack="false"/>
-
-   <plugin
-         id="org.eclipse.ecf.remoteservice.asyncproxy"
-         download-size="0"
-         install-size="0"
-         version="2.1.100.qualifier"
+         version="2.1.200.qualifier"
          unpack="false"/>
 
 </feature>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.feature/pom.xml b/releng/features/org.eclipse.ecf.remoteservice.feature/pom.xml
index cb2685b..e742bbf 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.feature/pom.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.feature/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.remoteservice.feature</artifactId>
-  <version>2.5.201-SNAPSHOT</version>
+  <version>2.5.300-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
index 4317624..8aa4c88 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.ecf.remoteservice.sdk.feature"
       label="ECF Remote Services SDK"
-      version="3.14.21.qualifier"
+      version="3.14.22.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="0.0.0">
diff --git a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/pom.xml b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/pom.xml
index 49885d2..ee35a4c 100644
--- a/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/pom.xml
+++ b/releng/features/org.eclipse.ecf.remoteservice.sdk.feature/pom.xml
@@ -10,6 +10,6 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.remoteservice.sdk.feature</artifactId>
-  <version>3.14.21-SNAPSHOT</version>
+  <version>3.14.22-SNAPSHOT</version>
   <packaging>eclipse-feature</packaging>
 </project>
diff --git a/releng/features/org.eclipse.ecf.sdk/feature.xml b/releng/features/org.eclipse.ecf.sdk/feature.xml
index 66b28a9..09daba4 100644
--- a/releng/features/org.eclipse.ecf.sdk/feature.xml
+++ b/releng/features/org.eclipse.ecf.sdk/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="org.eclipse.ecf.sdk"
       label="%featureName"
-      version="3.14.21.qualifier"
+      version="3.14.22.qualifier"
       provider-name="%providerName"
       license-feature="org.eclipse.license"
       license-feature-version="0.0.0">
diff --git a/releng/org.eclipse.ecf.releng.bm/karaf/features/karaf-features.xml b/releng/org.eclipse.ecf.releng.bm/karaf/features/karaf-features.xml
index f07f661..a3e2b54 100644
--- a/releng/org.eclipse.ecf.releng.bm/karaf/features/karaf-features.xml
+++ b/releng/org.eclipse.ecf.releng.bm/karaf/features/karaf-features.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-	name="ecf-remoteservices-sdk-3.14.21">
-	<feature name="ecf-rs-dependencies" version="3.14.21"
-		description="ECF 3.14.21 RemoteServices External Dependencies. https://wiki.eclipse.org/ECF#OSGi_Remote_Services">
+	name="ecf-remoteservices-sdk-3.14.22">
+	<feature name="ecf-rs-dependencies" version="3.14.22"
+		description="ECF 3.14.22 RemoteServices External Dependencies. https://wiki.eclipse.org/ECF#OSGi_Remote_Services">
 		<bundle>
 			mvn:org.eclipse.platform/org.eclipse.equinox.supplement/1.7.0
 		</bundle>
@@ -19,9 +19,9 @@
 		<feature>eventadmin</feature>
 	</feature>
 	
-	<feature name="ecf-rs-core" version="3.14.21"
+	<feature name="ecf-rs-core" version="3.14.22"
 		description="ECF Core">
-		<feature version="3.14.21">ecf-rs-dependencies</feature>
+		<feature version="3.14.22">ecf-rs-dependencies</feature>
 		<bundle> mvn:org.eclipse.ecf/org.eclipse.ecf.identity</bundle>
 		<bundle> mvn:org.eclipse.ecf/org.eclipse.ecf</bundle>
 		<bundle>
@@ -37,16 +37,16 @@
 			mvn:org.eclipse.ecf/org.eclipse.ecf.remoteservice
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-console" version="3.14.21"
+	<feature name="ecf-rs-console" version="3.14.22"
 		description="ECF Console">
 		<bundle> mvn:org.eclipse.ecf/org.eclipse.ecf.console</bundle>
 		<bundle>
 			mvn:org.eclipse.ecf/org.eclipse.ecf.osgi.services.remoteserviceadmin.console
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-rsa-impl" version="3.14.21"
+	<feature name="ecf-rs-rsa-impl" version="3.14.22"
 		description="ECF RemoteServices OSGi R7 Remote Service Admin (RSA) Impl. See https://wiki.eclipse.org/Remote_Services_Admin">
-		<feature version="3.14.21">ecf-rs-core</feature>
+		<feature version="3.14.22">ecf-rs-core</feature>
 		<bundle>
 			mvn:org.eclipse.ecf/org.eclipse.osgi.services.remoteserviceadmin
 		</bundle>
@@ -57,28 +57,28 @@
 			mvn:org.eclipse.ecf/org.eclipse.ecf.osgi.services.remoteserviceadmin
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-rsa-topology-manager" version="3.14.21"
+	<feature name="ecf-rs-rsa-topology-manager" version="3.14.22"
 		description="ECF RemoteServices OSGi R7 Default Topology Manager (promiscuous). See https://wiki.eclipse.org/Remote_Services_Admin">
 		<bundle>
 			mvn:org.eclipse.ecf/org.eclipse.ecf.osgi.services.distribution
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-rsa" version="3.14.21"
-		description="ECF 3.14.21 Remote Service Admin">
-		<feature version="3.14.21">ecf-rs-rsa-impl</feature>
-		<feature version="3.14.21">ecf-rs-rsa-topology-manager</feature>
+	<feature name="ecf-rs-rsa" version="3.14.22"
+		description="ECF 3.14.22 Remote Service Admin">
+		<feature version="3.14.22">ecf-rs-rsa-impl</feature>
+		<feature version="3.14.22">ecf-rs-rsa-topology-manager</feature>
 	</feature>
-	<feature name="ecf-rs-distribution-generic" version="3.14.21"
+	<feature name="ecf-rs-distribution-generic" version="3.14.22"
 		description="ECF RemoteServices Generic Distribution Provider. https://wiki.eclipse.org/EIG:Configuration_Properties">
-		<feature version="3.14.21">ecf-rs-rsa</feature>
+		<feature version="3.14.22">ecf-rs-rsa</feature>
 		<bundle> mvn:org.eclipse.ecf/org.eclipse.ecf.provider</bundle>
 		<bundle>
 			mvn:org.eclipse.ecf/org.eclipse.ecf.provider.remoteservice
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-distribution-rosgi" version="3.14.21"
+	<feature name="ecf-rs-distribution-rosgi" version="3.14.22"
 		description="ECF RemoteService ROSGi Distribution Provider. https://wiki.eclipse.org/EIG:Configuration_Properties">
-		<feature version="3.14.21">ecf-rs-rsa</feature>
+		<feature version="3.14.22">ecf-rs-rsa</feature>
 		<bundle>mvn:org.eclipse.ecf/org.objectweb.asm</bundle>
 		<bundle>
 			mvn:org.eclipse.ecf/ch.ethz.iks.r_osgi.remote
@@ -88,56 +88,56 @@
 			mvn:org.eclipse.ecf/org.eclipse.ecf.provider.r_osgi
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-discovery-jmdns" version="3.14.21"
+	<feature name="ecf-rs-discovery-jmdns" version="3.14.22"
 		description="ECF RemoteServices JMDNS Discovery Provider">
-		<feature version="3.14.21">ecf-rs-rsa</feature>
+		<feature version="3.14.22">ecf-rs-rsa</feature>
 		<bundle>
 			mvn:org.eclipse.ecf/org.eclipse.ecf.provider.jmdns
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-eventadmin" version="3.14.21"
-		description="ECF 3.14.21 RemoteServices SDK Distributed EventAdmin">
-		<feature version="3.14.21">ecf-rs-rsa</feature>
+	<feature name="ecf-rs-eventadmin" version="3.14.22"
+		description="ECF 3.14.22 RemoteServices SDK Distributed EventAdmin">
+		<feature version="3.14.22">ecf-rs-rsa</feature>
 		<bundle>
 			mvn:org.eclipse.ecf/org.eclipse.ecf.remoteservice.eventadmin
 		</bundle>
 	</feature>
 	<feature name="ecf-rs-examples-timeservice-api"
-		version="3.14.21"
+		version="3.14.22"
 		description="ECF RemoteService TimeService Example API. See https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service">
 		<bundle>
 			https://download.eclipse.org/rt/ecf/3.14.19/site.p2/3.14.19.v20210101-2239/plugins/com.mycorp.examples.timeservice.async_2.1.100.v20200611-1508.jar
 		</bundle>
 	</feature>
 	<feature name="ecf-rs-examples-timeservice-host"
-		version="3.14.21"
+		version="3.14.22"
 		description="ECF RemoteService TimeService Example Host. See https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service">
-		<feature version="3.14.21">ecf-rs-examples-timeservice-api</feature>
+		<feature version="3.14.22">ecf-rs-examples-timeservice-api</feature>
 		<bundle>
 			https://download.eclipse.org/rt/ecf/3.14.19/site.p2/3.14.19.v20210101-2239/plugins/com.mycorp.examples.timeservice.host_1.1.300.v20200611-1508.jar
 		</bundle>
 	</feature>
 	<feature name="ecf-rs-examples-timeservice-consumer-async"
-		version="3.14.21"
+		version="3.14.22"
 		description="ECF RemoteService TimeService Async Example Consumer.  See https://wiki.eclipse.org/Tutorial:_Building_your_first_OSGi_Remote_Service">
-		<feature version="3.14.21">ecf-rs-examples-timeservice-api</feature>
+		<feature version="3.14.22">ecf-rs-examples-timeservice-api</feature>
 		<bundle>
 			https://download.eclipse.org/rt/ecf/3.14.19/site.p2/3.14.19.v20210101-2239/plugins/com.mycorp.examples.timeservice.consumer.ds.async_1.0.200.v20200611-1508.jar
 		</bundle>
 	</feature>
-	<feature name="ecf-rs-sdk" version="3.14.21"
-		description="ECF 3.14.21 RemoteServices SDK with Generic Distribution Provider and Zeroconf Multicast LAN Discovery Provider">
-		<feature version="3.14.21">ecf-rs-distribution-generic</feature>
-		<feature version="3.14.21">ecf-rs-discovery-jmdns</feature>
-		<feature version="3.14.21">ecf-rs-console</feature>
+	<feature name="ecf-rs-sdk" version="3.14.22"
+		description="ECF 3.14.22 RemoteServices SDK with Generic Distribution Provider and Zeroconf Multicast LAN Discovery Provider">
+		<feature version="3.14.22">ecf-rs-distribution-generic</feature>
+		<feature version="3.14.22">ecf-rs-discovery-jmdns</feature>
+		<feature version="3.14.22">ecf-rs-console</feature>
 	</feature>
 	<feature name="ecf-rs-sdk-examples-timeservicehost"
-		version="3.14.21"
-		description="ECF 3.14.21 RemoteServices SDK with Generic Distribution Provider and Zeroconf Multicast LAN Discovery Provider">
-		<feature version="3.14.21">ecf-rs-distribution-generic</feature>
-		<feature version="3.14.21">ecf-rs-discovery-jmdns</feature>
-		<feature version="3.14.21">ecf-rs-console</feature>
-		<feature version="3.14.21">ecf-rs-examples-timeservice-host</feature>
+		version="3.14.22"
+		description="ECF 3.14.22 RemoteServices SDK with Generic Distribution Provider and Zeroconf Multicast LAN Discovery Provider">
+		<feature version="3.14.22">ecf-rs-distribution-generic</feature>
+		<feature version="3.14.22">ecf-rs-discovery-jmdns</feature>
+		<feature version="3.14.22">ecf-rs-console</feature>
+		<feature version="3.14.22">ecf-rs-examples-timeservice-host</feature>
 	</feature>
 	<!-- Include etcd discovery provider -->
 	<repository>https://raw.githubusercontent.com/ECF/etcd-provider/master/build/karaf-features.xml</repository>
diff --git a/releng/org.eclipse.ecf.releng.repository/pom.xml b/releng/org.eclipse.ecf.releng.repository/pom.xml
index 111769b..8f23f19 100644
--- a/releng/org.eclipse.ecf.releng.repository/pom.xml
+++ b/releng/org.eclipse.ecf.releng.repository/pom.xml
@@ -10,7 +10,7 @@
   </parent>
   <groupId>org.eclipse.ecf</groupId>
   <artifactId>org.eclipse.ecf.releng.repository</artifactId>
-  <version>3.14.21-SNAPSHOT</version>
+  <version>3.14.22-SNAPSHOT</version>
   <packaging>eclipse-repository</packaging>
 
   <name>ECF p2 Repository</name>