On 6 September 2014 15:25, Philippe Mouawad <[email protected]> wrote: > On Sat, Sep 6, 2014 at 4:07 PM, sebb <[email protected]> wrote: > >> On 6 September 2014 14:30, Philippe Mouawad <[email protected]> >> wrote: >> > Hello sebb, >> > I have a doubt, 2 questions: >> > 1) For me there is one instance of ReceiveSubscriber per thread and no >> > concurrent access >> >> As the comment says: >> >> public void close() { // called from threadFinished() thread >> > > Agree but it is still the same JMeterThread that called sample, so no > concurrent threads accessing for me. > I debugged it and couldn't find.
Agreed, but that is not the only reason why sync is needed. >> >> > 2)Even if there was , this is more of a question as I have a doubt, if >> the >> > access is sequential, is volatile still needed ? >> >> The Java memory model allows threads to cache variables. >> >> This is not about concurrency, it's about safe publication of data. >> >> Volatile is needed here to ensure memory caches are properly >> flushed/refreshed. >> >> Ok > >> > Thanks >> > >> > >> > On Sat, Sep 6, 2014 at 2:32 PM, sebb <[email protected]> wrote: >> > >> >> On 6 September 2014 10:50, <[email protected]> wrote: >> >> > Author: pmouawad >> >> > Date: Sat Sep 6 09:50:18 2014 >> >> > New Revision: 1622838 >> >> > >> >> > URL: http://svn.apache.org/r1622838 >> >> > Log: >> >> > Bug 56761 - JMeter tries to stop already stopped JMS connection and >> >> displays "The connection is closed" >> >> > Bugzilla Id: 56761 >> >> > >> >> > Modified: >> >> > >> >> >> jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java >> >> > jmeter/trunk/xdocs/changes.xml >> >> > >> >> > Modified: >> >> >> jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java >> >> > URL: >> >> >> http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java?rev=1622838&r1=1622837&r2=1622838&view=diff >> >> > >> >> >> ============================================================================== >> >> > --- >> >> >> jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java >> >> (original) >> >> > +++ >> >> >> jmeter/trunk/src/protocol/jms/org/apache/jmeter/protocol/jms/client/ReceiveSubscriber.java >> >> Sat Sep 6 09:50:18 2014 >> >> > @@ -62,6 +62,8 @@ public class ReceiveSubscriber implement >> >> > */ >> >> > private final LinkedBlockingQueue<Message> queue; >> >> > >> >> > + private boolean connectionStarted; >> >> >> >> This needs to be volatile, as it is accessed from multiple threads. >> >> >> >> > + >> >> > /** >> >> > * Constructor takes the necessary JNDI related parameters to >> >> create a >> >> > * connection and prepare to begin receiving messages. >> >> > @@ -222,6 +224,7 @@ public class ReceiveSubscriber implement >> >> > public void start() throws JMSException { >> >> > log.debug("start()"); >> >> > connection.start(); >> >> > + connectionStarted=true; >> >> > } >> >> > >> >> > /** >> >> > @@ -231,6 +234,7 @@ public class ReceiveSubscriber implement >> >> > public void stop() throws JMSException { >> >> > log.debug("stop()"); >> >> > connection.stop(); >> >> > + connectionStarted=false; >> >> > } >> >> > >> >> > /** >> >> > @@ -271,11 +275,12 @@ public class ReceiveSubscriber implement >> >> > public void close() { // called from threadFinished() thread >> >> > log.debug("close()"); >> >> > try { >> >> > - if(connection != null) { >> >> > + if(connection != null && connectionStarted) { >> >> > connection.stop(); >> >> > + connectionStarted = false; >> >> > } >> >> > } catch (JMSException e) { >> >> > - log.error(e.getMessage()); >> >> > + log.warn("Stopping connection throws exception, >> >> message:"+e.getMessage()); >> >> > } >> >> > Utils.close(subscriber, log); >> >> > Utils.close(session, log); >> >> > >> >> > Modified: jmeter/trunk/xdocs/changes.xml >> >> > URL: >> >> >> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1622838&r1=1622837&r2=1622838&view=diff >> >> > >> >> >> ============================================================================== >> >> > --- jmeter/trunk/xdocs/changes.xml (original) >> >> > +++ jmeter/trunk/xdocs/changes.xml Sat Sep 6 09:50:18 2014 >> >> > @@ -154,6 +154,7 @@ jmeter.gui.action.LookAndFeelCommand: Us >> >> > <li><bugzilla>46932</bugzilla> - Alias given in select statement is >> not >> >> used as column header in response data for a JDBC request.Based on >> report >> >> and analysis of Nicola Ambrosetti</li> >> >> > <li><bugzilla>56539</bugzilla> - Mail reader sampler: When Number of >> >> messages to retrieve is superior to 1, Number of samples should only >> show 1 >> >> not the number of messages retrieved</li> >> >> > <li><bugzilla>56809</bugzilla> - JMSSampler closes InitialContext too >> >> early. Contributed by Bradford Hovinen (hovinen at gmail.com)</li> >> >> > +<li><bugzilla>56761</bugzilla> - JMeter tries to stop already stopped >> >> JMS connection and displays "The connection is closed"</li> >> >> > </ul> >> >> > >> >> > <h3>Controllers</h3> >> >> > @@ -233,8 +234,8 @@ jmeter.gui.action.LookAndFeelCommand: Us >> >> > <ul> >> >> > <li><bugzilla>56691</bugzilla> - Synchronizing Timer : Add timeout on >> >> waiting</li> >> >> > <li><bugzilla>56701</bugzilla> - HTTP Authorization Manager/ Kerberos >> >> Authentication: add port to SPN when server port is neither 80 nor 443. >> >> Based on patches from Dan Haughey (dan.haughey at swinton.co.uk) and >> >> Felix Schumacher (felix.schumacher at internetallee.de)</li> >> >> > -<li><bugzilla>56841</bugzilla> - New configuration element: DNS Cache >> >> Manager to improve the testing of CDN. Based on patch from Dzmitry >> Kashlach >> >> (dzmitrykashlach at gmail.com)</li> >> >> > -<li><bugzilla>52061</bugzilla> - Allow access to Request Headers in >> >> Regex Extractor. Based on patch from Dzmitry Kashlach (dzmitrykashlach >> at >> >> gmail.com)</li> >> >> > +<li><bugzilla>56841</bugzilla> - New configuration element: DNS Cache >> >> Manager to improve the testing of CDN. Based on patch from Dzmitry >> Kashlach >> >> (dzmitrykashlach at gmail.com), donated by BlazeMeter Ltd.</li> >> >> > +<li><bugzilla>52061</bugzilla> - Allow access to Request Headers in >> >> Regex Extractor. Based on patch from Dzmitry Kashlach (dzmitrykashlach >> at >> >> gmail.com), donated by BlazeMeter Ltd.</li> >> >> > </ul> >> >> > >> >> > <h3>Functions</h3> >> >> > @@ -274,13 +275,14 @@ jmeter.gui.action.LookAndFeelCommand: Us >> >> > <li>James Liang (jliang at andera.com)</li> >> >> > <li>Emmanuel Bourg (ebourg at apache.org)</li> >> >> > <li>Nicola Ambrosetti (ambrosetti.nicola at gmail.com)</li> >> >> > -<li><a href="http://ubikloadpack.com">Ubik Load Pack >> support</a></li> >> >> > +<li><a href="http://ubikloadpack.com">Ubik Load Pack</a></li> >> >> > <li>Mikhail Epikhin (epihin-m at yandex.ru)</li> >> >> > <li>Dan Haughey (dan.haughey at swinton.co.uk)</li> >> >> > <li>Felix Schumacher (felix.schumacher at internetallee.de)</li> >> >> > <li>Dzmitry Kashlach (dzmitrykashlach at gmail.com)</li> >> >> > <li>Andrey Pohilko (apc4 at ya.ru)</li> >> >> > <li>Bradford Hovinen (hovinen at gmail.com)</li> >> >> > +<li><a href="http://blazemeter.com">BlazeMeter Ltd.</a></li> >> >> > </ul> >> >> > >> >> > <br/> >> >> > >> >> > >> >> >> > >> > >> > >> > -- >> > Cordialement. >> > Philippe Mouawad. >> > > > > -- > Cordialement. > Philippe Mouawad.
