Would it be worth making the threadpool larger possibly?
On Mon, Jun 23, 2008 at 5:58 AM, Guillaume Nodet <[EMAIL PROTECTED]> wrote:
> I'm wondering if for some reason your endpoint sends a request to itself ?
> If this request is handled synchronously, it may happen that the
> currentRequest is set to null while handling this request, but in the
> same thread as the first request ?
> Under high load, this behavior could happen if the thread pool is
> exhausted, because under such conditions, the work will be executed in
> the same thread...
>
> On Mon, Jun 23, 2008 at 9:52 AM, Ryan Moquin <[EMAIL PROTECTED]>
> wrote:
> > Oh right, because the thread obviously would be the one that would go
> > through onMessageExchange method and then it would be set to null
> after...
> > (bear with me, long weekend dealing with this problem and it's 4am on a
> > workday.. haha).
> >
> > It's a rather large bean, composed of several classes (it does a lot of
> > complicated stuff inside the bean)... but I could probably send you some
> > pieces of it... do you mind if I email them privately to you?
> >
> > On Mon, Jun 23, 2008 at 3:44 AM, Guillaume Nodet <[EMAIL PROTECTED]>
> wrote:
> >
> >> But the current request is only set to null *after* calling the pojo.
> >> Do you have the full code of you bean ?
> >>
> >> On Mon, Jun 23, 2008 at 9:31 AM, Ryan Moquin <[EMAIL PROTECTED]>
> >> wrote:
> >> > Sure, I backed out the changes in my editor.. basically my bean is
> >> standard
> >> > compared to the servicemix docs (for how to handle the exchange coming
> >> in),
> >> > then my bean takes the injected deliverychannel and hands it to a
> class
> >> that
> >> > creates a message to send out with results of some analysis
> performed..
> >> here
> >> > is the code to send out (it's using the DeliveryChannel injected into
> the
> >> > bean by Servicemix):
> >> >
> >> > Marshaller notificationMarshaller = jaxbContext.createMarshaller();
> >> >
> notificationMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
> >> > Boolean.TRUE);
> >> > notificationMarshaller.marshal(notification, writer);
> >> > if (destinationQname == null) {
> >> > destinationQname = new QName(getDestinationNamespace(),
> >> > getDestinationService());
> >> > }
> >> > MessageExchangeFactory exchangeFactory =
> >> > deliveryChannel.createExchangeFactory();
> >> > InOnly exchange = exchangeFactory.createInOnlyExchange();
> >> > NormalizedMessage message = exchange.createMessage();
> >> > message.setContent(new StringSource(writer.toString()));
> >> > exchange.setInMessage(message);
> >> > exchange.setService(destinationQname);
> >> > deliveryChannel.send(exchange);
> >> >
> >> > The send is where the ConcurrentHashmap complains about an NPE .. I
> think
> >> > because the BeanComponent sets the CurrentRequest to null around the
> time
> >> my
> >> > code is trying to send a request that must get clobbered? There's no
> >> other
> >> > explanation for it.. it looks like the NPE is caused by
> >> > currentRequest.get(), which is set back to null by the BeanComponent
> and
> >> > since they are in the same thread.... they interfere.
> >> >
> >> > Ryan
> >> >
> >> > On Mon, Jun 23, 2008 at 3:24 AM, Guillaume Nodet <[EMAIL PROTECTED]>
> >> wrote:
> >> >
> >> >> Is there any way you could paste the code of the bean you're using so
> >> >> that i can have a quick look. You can skip any non-jbi related
> >> >> processing...
> >> >>
> >> >> On Mon, Jun 23, 2008 at 9:18 AM, Ryan Moquin <[EMAIL PROTECTED]
> >
> >> >> wrote:
> >> >> > No, I'm just simply using the deliverychannel to send out, which is
> >> >> > mentioned in the servicemix docs as something that you can do. I
> >> assume
> >> >> > that means it's recommended :) I did see that I can inject a
> >> >> > ComponentContext and so I'm currently changing my outbound messages
> to
> >> >> that
> >> >> > to see if I can get around this problem. I think I just can't use
> the
> >> >> > DeliveryContext in the same Pojo (same thread).
> >> >> >
> >> >> > On Mon, Jun 23, 2008 at 3:11 AM, Guillaume Nodet <[EMAIL PROTECTED]
> >
> >> >> wrote:
> >> >> >
> >> >> >> The NPE in the PojoChannel.send() method means that the
> >> >> >> currentRequest.get() is null.
> >> >> >> Do you perform any threading operation in the pojo ? If yes, you
> >> >> >> should try to remove that, as the component is already able to
> handle
> >> >> >> concurrent requests.
> >> >> >>
> >> >> >> On Sat, Jun 21, 2008 at 6:48 AM, Ryan Moquin <
> [EMAIL PROTECTED]
> >> >
> >> >> >> wrote:
> >> >> >> > I hate to say this Bruce, but unfortunately 3.2.2 is working
> pretty
> >> >> bad
> >> >> >> for
> >> >> >> > me and has the same problem :( It only seems to affect our
> >> production
> >> >> >> > server and in a few minutes after start up, I start getting the
> >> >> >> > NullPointerException.. slowly all my services start doing it and
> >> they
> >> >> all
> >> >> >> > stop working. If I stop and restart servicemix, then
> >> servicemix-jms
> >> >> >> > components are no longer routable. I'm guessing this error
> causes
> >> >> >> > Servicemix to shut them down and not deploy them anymore
> >> (Servicemix
> >> >> does
> >> >> >> > the same thing if a service unit starts up, tries to make a
> Joram
> >> >> >> connection
> >> >> >> > to a server that isn't up, servicemix will shutdown that SU and
> >> will
> >> >> >> always
> >> >> >> > shut it down immediately after it starts on any subsequent run).
> >> >> >> >
> >> >> >> > It seems like this problem must be related to a race condition.
> >> When
> >> >> >> doing
> >> >> >> > development testing, I never see this problem on my laptop even
> >> under
> >> >> >> high
> >> >> >> > load. One our fast test server, I see this error popup once on
> >> >> startup
> >> >> >> and
> >> >> >> > then it doesn't seem to happen again. On our even faster
> >> production
> >> >> >> server,
> >> >> >> > the whole thing looses it's wheels and falls apart after a few
> >> >> minutes.
> >> >> >> >
> >> >> >> > I'm supposed to be deploying this system in a few days and of
> >> course
> >> >> >> that's
> >> >> >> > the only spot where I can't temporarily limp by. Is it possible
> >> you
> >> >> >> could
> >> >> >> > give me some hints on what the problem is and I'll debug it this
> >> >> weekend
> >> >> >> to
> >> >> >> > see if I can fix it, or at least patch it temporarily? I really
> >> need
> >> >> to
> >> >> >> > figure out way to get around this problem. Other than that,
> 3.2.2
> >> >> seems
> >> >> >> to
> >> >> >> > work perfectly fine.
> >> >> >> >
> >> >> >> > Here is the caused by error again in case it's any bit different
> >> than
> >> >> the
> >> >> >> > 3.2.1 one was:
> >> >> >> >
> >> >> >> > Caused by: java.lang.NullPointerException
> >> >> >> > at
> >> >> >> >
> >> java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:881)
> >> >> >> > at
> >> >> >> >
> >> >> >>
> >> >>
> >>
> org.apache.servicemix.bean.BeanEndpoint$PojoChannel.send(BeanEndpoint.java:569)
> >> >> >> > at
> >> >> >> >
> >> >> >>
> >> >>
> >>
> com.notification.impl.JbiNotificationHandlerImpl.sendNotification(JbiNotificat
> >> >> >> > ionHandlerImpl.java:80)
> >> >> >> >
> >> >> >> > Also, is the delivery channel component threadsafe? I'm curious
> if
> >> >> >> multiple
> >> >> >> > threads accessing it is a problem or if I should keep access to
> it
> >> >> >> > synchronized? I'm currently synchronizing, but don't want to if
> I
> >> >> don't
> >> >> >> > need to.
> >> >> >> >
> >> >> >> > Thanks!
> >> >> >> > Ryan
> >> >> >> >
> >> >> >> > On Thu, Jun 19, 2008 at 2:19 AM, Bruce Snyder <
> >> [EMAIL PROTECTED]
> >> >> >
> >> >> >> > wrote:
> >> >> >> >
> >> >> >> >> On Wed, Jun 18, 2008 at 7:56 PM, Ryan Moquin <
> >> [EMAIL PROTECTED]
> >> >> >
> >> >> >> >> wrote:
> >> >> >> >> > I'm using Servicemix 3.2.1, so I'll give 3.2.2 a try. I was
> >> kind
> >> >> of
> >> >> >> >> waiting
> >> >> >> >> > until it was released, but this problem is now cropping up on
> a
> >> >> >> regular
> >> >> >> >> > basis on a server so I'll definitely give it a shot.
> Hopefully
> >> >> this
> >> >> >> will
> >> >> >> >> > allow me to get this project done so I can then get that
> Joram
> >> >> write
> >> >> >> up
> >> >> >> >> done
> >> >> >> >> > since I should have ran across hopefully most of the gotchas
> for
> >> it
> >> >> at
> >> >> >> >> that
> >> >> >> >> > point.
> >> >> >> >>
> >> >> >> >> 3.2.2 will be released very soon and I know it's pretty stable.
> >> Maybe
> >> >> >> >> we can release it this weekend.
> >> >> >> >>
> >> >> >> >> Bruce
> >> >> >> >> --
> >> >> >> >> perl -e 'print
> >> >> >> >>
> >> unpack("u30","D0G)[EMAIL PROTECTED]&5R\"F)R=6-E+G-N>61E<D\!G;6%I;\"YC;VT*"
> >> >> >> >> );'
> >> >> >> >>
> >> >> >> >> Apache ActiveMQ - http://activemq.org/
> >> >> >> >> Apache Camel - http://activemq.org/camel/
> >> >> >> >> Apache ServiceMix - http://servicemix.org/
> >> >> >> >>
> >> >> >> >> Blog: http://bruceblog.org/
> >> >> >> >>
> >> >> >> >
> >> >> >>
> >> >> >>
> >> >> >>
> >> >> >> --
> >> >> >> Cheers,
> >> >> >> Guillaume Nodet
> >> >> >> ------------------------
> >> >> >> Blog: http://gnodet.blogspot.com/
> >> >> >>
> >> >> >
> >> >>
> >> >>
> >> >>
> >> >> --
> >> >> Cheers,
> >> >> Guillaume Nodet
> >> >> ------------------------
> >> >> Blog: http://gnodet.blogspot.com/
> >> >>
> >> >
> >>
> >>
> >>
> >> --
> >> Cheers,
> >> Guillaume Nodet
> >> ------------------------
> >> Blog: http://gnodet.blogspot.com/
> >>
> >
>
>
>
> --
> Cheers,
> Guillaume Nodet
> ------------------------
> Blog: http://gnodet.blogspot.com/
>