qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrew Kennedy <andrewinternatio...@gmail.com>
Subject Re: [jira] Commented: (QPID-2694) Memory leak in 0-8/0-9 AMQSessions on channel close
Date Wed, 30 Jun 2010 07:20:49 GMT
Hm.

It's not something I've ever had to do before, I think. Can anyone  
help me out on how to write a unit test for a (fixed) memory leak in  
Java?

I could just create 100K sessions on a connection, close them and say  
that's all good, but that's just the happy path. It wouldn't really  
be testing the failure case, as you can't expect to do this:

	} catch (OuttOfMemoryError oome) {
	    fail("What does this program have in common with a sieve?");
	}

If I start a child JVM with the -XX HeapDumpOnOOME option, and say  
10Mb of heap, then run the number of sessions up as far as possible,  
that could work. If there's no heap dump file, the test passes?

Or, I could monitor heap usage as I create the (non) leaky sessions,  
and make sure the numbers balance out before and after closing a  
session, and would also have to make sure GC has run, and so on. Not  
exactly as below, but similar. I don't really like doing this sort of  
thing in Java...

	long free = Runtime.getRuntime().freeMemory();
	if (free < HEAP_LIMIT_LWM) fail("Used too much memory");

So, what do people think would be the best and simplest way to test  
this leak is fixed? Or am I over complicating this for myself before  
I've had enough coffee?

Cheerz,
Andrew.
-- 
-- andrew d kennedy ? do not fold, bend, spindle, or mutilate ;
-- http://grkvlt.blogspot.com/ ? edinburgh : +44 7941 197 134 ;

On 30 Jun 2010, at 07:38, Marnie McCormack (JIRA) wrote:

>
>     [ https://issues.apache.org/jira/browse/QPID-2694? 
> page=com.atlassian.jira.plugin.system.issuetabpanels:comment- 
> tabpanel&focusedCommentId=12883809#action_12883809 ]
>
> Marnie McCormack commented on QPID-2694:
> ----------------------------------------
>
> Reviewed files, changes look ok - applied to branch. Please add a  
> test for this case, thanks.
>
>> Memory leak in 0-8/0-9 AMQSessions on channel close
>> ---------------------------------------------------
>>
>>                 Key: QPID-2694
>>                 URL: https://issues.apache.org/jira/browse/QPID-2694
>>             Project: Qpid
>>          Issue Type: Bug
>>          Components: Java Broker
>>    Affects Versions: 0.5, 0.6, 0.7
>>            Reporter: Andrew Kennedy
>>             Fix For: 0.5, 0.6, 0.7
>>
>>         Attachments: 0001-QPID-2694-Fix-channel-close-memory- 
>> leak.patch
>>
>>
>> When closing a 0-8/0-9 AMQSession, the ChannelCloseOk returned by  
>> the broker is not handled in the client, leading to a memory leak  
>> with AMQProtocolSession objects being left. This is particularly  
>> evident with frameworks like Mule which open a session per  
>> connection.
>
> -- 
> This message is automatically generated by JIRA.
> -
> You can reply to this email to add a comment to the issue online.
>
>
> ---------------------------------------------------------------------
> Apache Qpid - AMQP Messaging Implementation
> Project:      http://qpid.apache.org
> Use/Interact: mailto:dev-subscribe@qpid.apache.org
>


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Mime
View raw message