Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[eclipselink-dev] Fix for bug 237849 - RCM ServiceId issues: processing commands from same service in JMS

The following fix for 237849  has been checked in, and was previously reviewed.
(A patch file has also been uploaded to this bug)


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)


LRG + All RCM tests in Non-LRG (A-OK)

Oracle Email Signature Logo
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

Back to the top