Thanks!

On Sun, Nov 29, 2015 at 5:29 AM, Christopher Shannon <
christopher.l.shan...@gmail.com> wrote:

> I have merged this into master so it will go into 5.13.0 on Monday.  I will
> let Jenkins run our builds today to catch any problems but I don't expect
> any issues.
>
> On Sat, Nov 28, 2015 at 2:25 AM, Claus Ibsen <claus.ib...@gmail.com>
> wrote:
>
> > Yeah I agree.
> >
> > I just wonder if that loop was using equals and not comparing just the
> > message id, maybe there was a purpose of the old code. But a git blame
> > can maybe tell us more.
> >
> > On Sat, Nov 28, 2015 at 5:34 AM, David Sitsky <david.sit...@gmail.com>
> > wrote:
> > > Done: https://issues.apache.org/jira/browse/AMQ-6066
> > >
> > > If you can incorporate the patch in for 5.13.0 I'd be very grateful..
> as
> > it
> > > is a pain for us to not use an official release.  Also I believe this
> is
> > a
> > > really important performance regression that we'd want to stomp out
> > quickly
> > > for ActiveMQ..
> > >
> > > Many thanks in advance.
> > >
> > > Cheers,
> > > David
> > >
> > > On Sat, Nov 28, 2015 at 1:25 AM, Christopher Shannon <
> > > christopher.l.shan...@gmail.com> wrote:
> > >
> > >> Claus is right, open up a Jira and I or someone else can take a look
> at
> > >> this.  I don't know if there will be enough time to put this in before
> > >> 5.13.0 because I plan on starting the release Monday for that and I'd
> > want
> > >> to make sure all the tests run and there would be no unintended issues
> > by
> > >> making a change like this.
> > >>
> > >> However, even if this doesn't go in for 5.13.0, I would expect a bug
> fix
> > >> release (5.13.1) to follow shortly in a month or two and it could be
> > >> included in that.  It would also be a candidate to be merged into a
> > 5.12.2
> > >> release.
> > >>
> > >> On Fri, Nov 27, 2015 at 7:40 AM, Claus Ibsen <claus.ib...@gmail.com>
> > >> wrote:
> > >>
> > >> > Hi
> > >> >
> > >> > Well spotted. I think a good idea is to log a JIRA ticket about this
> > >> > so its not forgotten and so the AMQ team can look at it and get it
> > >> > into the next release.
> > >> >
> > >> > On Fri, Nov 27, 2015 at 2:39 AM, David Sitsky <
> david.sit...@gmail.com
> > >
> > >> > wrote:
> > >> > > FWIW I changed the contains method as follows:
> > >> > >
> > >> > > @Override
> > >> > > public boolean contains(MessageReference message) {
> > >> > >     if (message != null) {
> > >> > >         return map.containsKey(message.getMessageId());
> > >> > >     }
> > >> > >     return false;
> > >> > > }
> > >> > >
> > >> > > I got a speedup for my test taking 29 minutes from 41 minutes.
> Can
> > we
> > >> > get
> > >> > > this change in to the upcoming 5.13 release?
> > >> > >
> > >> > > On Thu, Nov 26, 2015 at 11:44 AM, David Sitsky <
> > david.sit...@gmail.com
> > >> >
> > >> > > wrote:
> > >> > >
> > >> > >> Hi,
> > >> > >>
> > >> > >> I have updated my application from ActiveMQ 5.3 to 5.11.1 and
> have
> > >> > noticed
> > >> > >> a performance degregation issue.  Running a number of jstacks I
> can
> > >> see
> > >> > the
> > >> > >> broker is often stuck here:
> > >> > >>
> > >> > >> "Queue:master-items" Id=122 RUNNABLE
> > >> > >> at
> > >> > >>
> > >> >
> > >>
> >
> org.apache.activemq.broker.region.cursors.OrderedPendingList.contains(OrderedPendingList.java:144)
> > >> > >> at
> > >> > >>
> > >> >
> > >>
> >
> org.apache.activemq.broker.region.Queue.doPageInForDispatch(Queue.java:1930)
> > >> > >> at
> > >> >
> > org.apache.activemq.broker.region.Queue.pageInMessages(Queue.java:2119)
> > >> > >> at
> org.apache.activemq.broker.region.Queue.iterate(Queue.java:1596)
> > >> > >> -  locked java.lang.Object@253c3089
> > >> > >> at
> > >> > >>
> > >> >
> > >>
> >
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:112)
> > >> > >> at
> > >> > >>
> > >> >
> > >>
> >
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:42)
> > >> > >>
> > >> > >> Number of locked synchronizers = 1
> > >> > >> -
> > >> java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync@2eb46567
> > >> > >>
> > >> > >> For this specific queue, there are a large number of items in
> it..
> > >> > around
> > >> > >> 100,000.  However I noticed the code for contains has:
> > >> > >>
> > >> > >>     public boolean contains(MessageReference message) {
> > >> > >>         if (message != null) {
> > >> > >>             for (PendingNode value : map.values()) {
> > >> > >>                 if (value.getMessage().equals(message)) {
> > >> > >>                     return true;
> > >> > >>                 }
> > >> > >>             }
> > >> > >>         }
> > >> > >>         return false;
> > >> > >>     }
> > >> > >>
> > >> > >> This will obviously be very slow.  Given the Map is keyed by
> > message
> > >> ID,
> > >> > >> can't we do a .contains(message.getMessageId()) instead?  I
> noticed
> > >> the
> > >> > >> remove() method does this.  I am not familiar with the internals
> of
> > >> > >> ActiveMQ, so I don't know the ramifications of this.
> > >> > >>
> > >> > >> Cheers,
> > >> > >> David
> > >> > >>
> > >> >
> > >> >
> > >> >
> > >> > --
> > >> > Claus Ibsen
> > >> > -----------------
> > >> > http://davsclaus.com @davsclaus
> > >> > Camel in Action 2: https://www.manning.com/ibsen2
> > >> >
> > >>
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
> >
>

Reply via email to