Thanks for the patch!  It's now applied.

Regards,
Hiram

On Dec 27, 2005, at 2:54 AM, <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> wrote:

Hello,

Please find a diff below for the org.activemq.ActiveMQConnectionFactory
class to ensure that when the clientID is specified using a URL
parameter e.g. tcp://localhost:1244?jms.clientID=TestClientID it is set for the connection. This seems like the only way to ensure that a client ID is specified when using a message driven bean under WebSphere with a
persistent topic.

199a200,204
            // Ensure Client ID is set for the connection if it was
explicity specified for the factory
            if (clientID != null) {
                connection.setClientID(clientID);
            }



Regards,

Marcus



-----Original Message-----
From: Adrian Co [mailto:[EMAIL PROTECTED]
Sent: 27 December 2005 03:15 AM
To: activemq-dev@geronimo.apache.org
Subject: Re: svn commit: r358785 -
/incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/ broke
r/region/PrefetchSubscription.java

Sorry, my bad.

I've rolled back the changes to the position of
node.incrementReferenceCount, but I did maintain the change for
incrementPreloadSize, since this was causing the memory leak in the
subscription.

Hope this is ok.

[EMAIL PROTECTED] wrote:

Hello,

By adding an incrementReferenceCount and decrementReferenceCount to the

PrefetchSubscription::dispatch method I have fixed the null message
problem I was experiencing.

   private void dispatch(final MessageReference node) throws
IOException {
       try {

           node.incrementReferenceCount();

           final Message message = node.getMessage();
           if( message == null ) {
               return;
           }

           // Make sure we can dispatch a message.
           if( canDispatch(node) ) {

               MessageDispatch md = createMessageDispatch(node,
message);
               dispatched.addLast(node);

               node.incrementReferenceCount();
               incrementPreloadSize(node.getMessage().getSize());

               if( info.isDispatchAsync() ) {
                   md.setConsumer(new Runnable(){
                       public void run() {
                           onDispatch(node, message);
                       }
                   });
                   context.getConnection().dispatchAsync(md);
               } else {
                   context.getConnection().dispatchSync(md);
                   onDispatch(node, message);
               }
           }
       }
       finally {
          node.decrementReferenceCount();
       }
   }

Regards,

Marcus

-----Original Message-----
From: Hiram Chirino [mailto:[EMAIL PROTECTED]
Sent: 23 December 2005 07:37 PM
To: activemq-dev@geronimo.apache.org
Cc: activemq-commits@geronimo.apache.org
Subject: Re: svn commit: r358785 -
/incubator/activemq/trunk/activemq-core/src/main/java/org/activemq/ brok
e
r/region/PrefetchSubscription.java

Hi Adrian,

doing a getMessage() before incrementReferenceCount() is dangerous
since the message could have been swapped out and the call to
getMessage() will return null.
Yes, I know there is a null check to see if the message is null, but
that should only happen if the message was expired. Right now I think
it's possible that we are going to have cases of where messages get
swapped out and this code is going to think that the message has been
expired.

Regards,
Hiram


On Dec 23, 2005, at 4:48 AM, [EMAIL PROTECTED] wrote:



Author: aco
Date: Fri Dec 23 01:47:47 2005
New Revision: 358785

URL: http://svn.apache.org/viewcvs?rev=358785&view=rev
Log:
Postpone incrementing of reference count and preload size, only after
we are sure that the message will be dispatched by the current
subscription. This is to prevent a memory leak type of scenario.

Modified:
   incubator/activemq/trunk/activemq-core/src/main/java/org/
activemq/broker/region/PrefetchSubscription.java

Modified: incubator/activemq/trunk/activemq-core/src/main/java/org/
activemq/broker/region/PrefetchSubscription.java
URL: http://svn.apache.org/viewcvs/incubator/activemq/trunk/
activemq-core/src/main/java/org/activemq/broker/region/
PrefetchSubscription.java?rev=358785&r1=358784&r2=358785&view=diff
==================================================================== ==
========
--- incubator/activemq/trunk/activemq-core/src/main/java/org/
activemq/broker/region/PrefetchSubscription.java (original)
+++ incubator/activemq/trunk/activemq-core/src/main/java/org/
activemq/broker/region/PrefetchSubscription.java Fri Dec 23
01:47:47 2005
@@ -239,19 +239,19 @@

    private void dispatch(final MessageReference node) throws
IOException {

-        node.incrementReferenceCount();
-
        final Message message = node.getMessage();
        if( message == null ) {
            return;
-        }
-        incrementPreloadSize(node.getMessage().getSize());
+        }

        // Make sure we can dispatch a message.
        if( canDispatch(node) ) {

            MessageDispatch md = createMessageDispatch(node,
message);
            dispatched.addLast(node);
+
+            node.incrementReferenceCount();
+            incrementPreloadSize(node.getMessage().getSize());

            if( info.isDispatchAsync() ) {
                md.setConsumer(new Runnable(){





___________________________________________________________

Important Notice:
Authorised Financial Services Provider

Important restrictions, qualifications and disclaimers ("the
Disclaimer") apply to this email. To read this click on the following
address or copy into your Internet browser:

http://www.absa.co.za/disclaimer

The Disclaimer forms part of the content of this email in terms of
section 11 of the Electronic Communications and Transactions Act, 25 of

2002.

If you are unable to access the Disclaimer, send a blank e-mail to
[EMAIL PROTECTED] and we will send you a copy of the Disclaimer.





___________________________________________________________

Important Notice:
Authorised Financial Services Provider

Important restrictions, qualifications and disclaimers
("the Disclaimer") apply to this email. To read this click on the
following address or copy into your Internet browser:

http://www.absa.co.za/disclaimer

The Disclaimer forms part of the content of this email in terms of
section 11 of the Electronic Communications and Transactions
Act, 25 of 2002.

If you are unable to access the Disclaimer, send a blank e-mail
to [EMAIL PROTECTED] and we will send you a copy of the
Disclaimer.

Reply via email to