Hi all,
Scott tried to provide a fix for this bug. He commented on the
bug that the fix should be available at
http://download.eclipse.org/rt/ecf/snapshot/site.p2/?d
but it is not. I need version 4.2.200.qualifier of bundle
org.eclipse.ecf.provider.remoteservice.
Maybe someone familiar with the ecf build could point me to the
download location for this fix!?
I'm a little in a hurry for that fix, since i will be away for
two weeks starting at tomorrow ;)
Thanks. Bye Peter
Am 17.03.2017 um 08:20 schrieb Peter
Hermsdorf:
Hi Scott,
created https://bugs.eclipse.org/bugs/show_bug.cgi?id=513791.
I'm wondering that no one else stumbled upon this issue ....
Thanks for your help!
Bye Peter
Am 17.03.2017 um 05:14 schrieb Scott
Lewis:
Hi Peter,
This seems to be a bug. Please open a bug report with the
info you've already provided, and I will fix in time for our
next minor release (3.13.6). I've already pretty much
written the fix, so this can all go quick.
Thanks,
Scott
On 3/16/2017 4:40 AM, Peter Hermsdorf wrote:
I now removed our custom code - I don't think it has
something to do with this issue.
current state:
on every client connect one ore more (depending on the
number of published services) "ID targetContainerID" Objects
are added to a List in the Map
localRegistryUnregistrationTargets in the
RegistrySharedObject on the Server Side.
the call stack is:
Daemon Thread
[org.eclipse.ecf.remoteservice.IRemoteServiceContainerAdapter:run]
(Suspended (breakpoint at line 1633 in
RegistrySharedObject))
owns: RemoteServiceRegistryImpl (id=252)
RegistrySharedObject.addTargetForUnregister(RemoteServiceRegistrationImpl,
ID) line: 1633
RegistrySharedObject.sendAddRegistrations(ID, Integer,
RemoteServiceRegistrationImpl[]) line: 1253
RegistrySharedObject.sendRegistryUpdate(ID, Integer)
line: 775
RegistrySharedObject.handleRegistryUpdateRequest(ID,
Integer) line: 1128
GeneratedMethodAccessor35.invoke(Object, Object[]) line:
not available
DelegatingMethodAccessorImpl.invoke(Object, Object[])
line: 43
Method.invoke(Object, Object...) line: 498
SharedObjectMsg.doInvoke(Object) line: 323
SharedObjectMsg.invoke(Object) line: 290
RegistrySharedObject.handleSharedObjectMsg(SharedObjectMsg)
line: 1843
RegistrySharedObject(BaseSharedObject).handleSharedObjectMsg(ID,
SharedObjectMsg) line: 467
RegistrySharedObject(BaseSharedObject).handleSharedObjectMsgEvent(ISharedObjectMessageEvent)
line: 457
SharedObjectMsgEventProcessor.processSharedObjectMsgEvent(ISharedObjectMessageEvent)
line: 41
SharedObjectMsgEventProcessor.processEvent(Event) line:
36
RegistrySharedObject(BaseSharedObject).fireEventProcessors(Event)
line: 192
RegistrySharedObject(BaseSharedObject).handleEvent(Event)
line: 126
SOWrapper.svc(Event) line: 182
SOWrapper$2.run() line: 138
Thread.run() line: 745
I don't see any code that removed entries from the List in
Map when the Client disconnects. So the List (and with it
the Map localRegistryUnregistrationTargets) grows until
there is no memory left.
Any help on this topic would greatly be appreciated.
thx Peter
Am 15.03.2017 um 15:52 schrieb
Peter Hermsdorf:
Hi all,
sorry for double posting - hotkeys are evil sometimes...
for custom error handling on server side (please see
previous discussion on this list as of 27.06.2014 with the
subject "Exception Handling of Remote Calls") we use a
derived HostContainerSelector and a derived
RegistrySharedObject. See code below.
The problem seems to be that we create a instance of
RegistrySharedObject (P4RegistrySharedObject()) wich gets
added to
org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject.localRegistryUnregistrationTargets
but "no one" calls
org.eclipse.ecf.provider.remoteservice.generic.RegistrySharedObject.sendUnregister(RemoteServiceRegistrationImpl)
when the remote client disconnects.
So the Map grows over time and finally the server run's into
an OutOfMemory Exception after some time.
Any suggestions where the Problem is or what is missing from
the implementation?
thanks in advance!
Best Regards, Peter
BTW: we are running ECF 3.13.1.v20160405-1820
extended HostContainerSelector:
@Override
protected IRemoteServiceContainer createRSContainer(
@SuppressWarnings("rawtypes") final
ServiceReference serviceReference, final Map<String,
Object> properties,
final ContainerTypeDescription
containerTypeDescription) throws SelectContainerException {
final ISharedObjectContainer container =
(ISharedObjectContainer) createContainer(serviceReference,
properties,
containerTypeDescription);
final ID adapterID =
IDFactory.getDefault().createStringID(IRemoteServiceContainerAdapter.class.getName());
final ISharedObjectManager manager =
container.getSharedObjectManager();
ISharedObject so =
manager.getSharedObject(adapterID);
if (so == null) {
so = new P4RegistrySharedObject();
try {
manager.addSharedObject(adapterID, so,
null);
} catch (final SharedObjectAddException e) {
throw new P4ServerException(e);
}
}
return new RemoteServiceContainer(container,
(IRemoteServiceContainerAdapter) so);
}
P4RegistrySharedObject extends RegistrySharedObject and just
implements a custom getSerializableException method - since
the original one is private, it's a copy of the
executeRequest method.
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or
unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/ecf-dev
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/ecf-dev
_______________________________________________
ecf-dev mailing list
ecf-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/ecf-dev
|