Does it possibly mean anything, or give any clues that when Servicemix first
deploys my BeanEndpoint (I have a couple instances of it deployed as
different services), they all deadlock at the same spot, which is
coincidentally where the NPEs happen? I had a stack trace, but then I lost
it because I disconnected my remote desktop terminal ... doh..
On Mon, Jun 23, 2008 at 6:08 AM, Ryan Moquin <[EMAIL PROTECTED]> wrote:
> 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/
>>
>
>