Hi,
while trying to integrate the fix for the bug below i
stumbled upon a new issue:
Caused by: java.lang.NoSuchMethodError:
org.eclipse.ecf.remoteservice.AbstractRemoteService.isReturnAsync(Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Z
at
org.eclipse.ecf.remoteservice.AbstractRemoteService.invoke(AbstractRemoteService.java:503)
... 5 common frames omitted
I updated the ECF implementation to the latest stable
version 3.14.1. The above problem happens in bundle
org.eclipse.ecf.remoteservice. The class
AbstractRemoteService extends
AbstractAsyncProxyRemoteService which is imported via
package import :
org.eclipse.ecf.remoteservice.asyncproxy;version="[1.0.0,3.0.0)"
I decided to use the bundle
org.eclipse.ecf.remoteservice.asyncproxy version
1.1.0.v20180311-0310 (and not version 2.1. 0 because of
other dependencies) which perfectly fits into that
version range.
The problem is that in that bundle the class
AbstractAsyncProxyRemoteService does not have a method
isReturnAsync which leads to the above error.
Should i file a bug or is that a known problem?
Thanks, bye Peter
Am 19.09.2018 um 10:28
schrieb Peter Hermsdorf:
Done: https://bugs.eclipse.org/bugs/show_bug.cgi?id=539218
Thanks for looking at the issue!
Bye Peter
Am 18.09.2018 um 19:19
schrieb Scott Lewis:
Hi
Peter,
I believe this is due to the (incorrect) line in
ImportRegistration.close():
public void close() {
boolean publish = false;
ID containerID = null;
Throwable exception = null;
EndpointDescription endpointDescription =
null;
ImportReference imRef = null;
synchronized (this) {
// only do this once
if (!closed) {
containerID = getContainerID();
exception = getException();
endpointDescription =
getEndpointDescription();
imRef = this.importReference;
publish =
importReference.close(this);
this.importReference =
null; <-- this line
should be deleted
closed = true;
}
}
...more code
I believe the importReference should never be set to
null in the ImportRegistration and that it is
incorrect that it did so. Also synchronization needs
to be added to ImportRegistration accessors so that
the synchronized block above prevents access to
importReference before closed = true (which is
resulting in NPE I think).
Peter if you would please open a bug, and put your
info in comments I will address in latest version as
soon as I can.
Scott
On 9/18/2018 7:33 AM, Peter Hermsdorf wrote:
Hi,
we sometimes faces the following error:
java.lang.NullPointerException
at
org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin$ImportRegistration.getException(RemoteServiceAdmin.java:1139)
at
org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin$ImportRegistration.getImportReference(RemoteServiceAdmin.java:1104)
at
org.eclipse.ecf.osgi.services.remoteserviceadmin.RemoteServiceAdmin.getImportedEndpoints(RemoteServiceAdmin.java:519)
The corresponding code in the class
ImportRegistration is
public Throwable getException() {
return
(closed)?updateException:importReference.getException();
}
So obviously importReference is null but closed is
false.
Any ideas what could cause this state? I've seen
that there are changes on this class but wasn't able
to determine if these have something to do with this
handling.
We are still on ECF version 3.13.8 and we are using
the ecf-genric provider.
The above code and the call to getImportedEndpoints
is used to update the connection state in an RCP
application and is asynchronously executed and
triggered by a new event to an
RemoteServiceAdminListener .... so more ore less on
service state change.
Any hints are welcome!
Thanks, bye Peter