On Saturday, September 6, 2014, sebb <[email protected]> wrote: > On 6 September 2014 15:25, Philippe Mouawad <[email protected] > <javascript:;>> wrote: > > On Sat, Sep 6, 2014 at 4:07 PM, sebb <[email protected] <javascript:;>> > wrote: > > > >> On 6 September 2014 14:30, Philippe Mouawad <[email protected] > <javascript:;>> > >> 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.
can you explain a bit more in this case, I don't get it > > >> > >> > 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] <javascript:;>> > wrote: > >> > > >> >> On 6 September 2014 10:50, <[email protected] <javascript:;>> > 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. > -- Cordialement. Philippe Mouawad.
