The following fix for 237849 has been checked in, and was previously
reviewed.
https://bugs.eclipse.org/237849
(A patch file has also been uploaded to this bug)
Description:
The primary problem is that service id used by RemoteCommandManager is
set to
System.identityHashCode (see oracle.toplink.remotecommand.ServiceId).
Such id would only be unique in its VM, but could be duplicated in
another
VM. Hovever RCM relies on this id to be unique - and that may cause all
sorts
of problems.
Secondary problem involved JMSTopicRemoteConnection incorrectly
processing its
own messages.
Resolved issue by adding a method 'boolean shouldCheckServiceId()' to
BroadcastRemoteConnection, and adding a check in the
processReceivedObject()
method to not invoke processCommandFromRemoteConnection() on the
RemoteCommandManager if shouldCheckServiceId() returns true;
Overrode shouldCheckServiceId() on JMSTopicRemoteConnection to return
true.
Changed ServiceId to have a better unique identifier other than its
hashcode,
imported java.util.UUID and used a Stringified instance of this as the
internal
id to ServiceId. In my testing, it was very fast to create a UUID.
Also fixed some spelling mistakes in the classes.
Code Review:
Not Required (previously reviewed by Andrei
Ilitchev)
Testing:
LRG + All RCM tests in Non-LRG (A-OK)
--
David Minsky | Senior Member of Technical Staff | (613)
288-4605
Oracle Server Technologies DDR
45 O'Connor Street, Suite 400, Ottawa, Ontario, Canada K1P 1A4
|