Oh, so you mean that it's not the bean sending the message to itself, it's that the jms consumer is sending back a reply, but not allocating a new thread for it. I am sending synchronously.. so maybe that's why? If that's the case.. then it sounds more like I'm simply not handling the reply properly then?
On Mon, Jun 23, 2008 at 12:21 PM, Guillaume Nodet <[EMAIL PROTECTED]> wrote: > it may be a little more complicated though. If all the thread pool > are exhausted, it could that the jms send back the done status to the > pojo, and everything could be executed in the same thread. Not sure > though ... But this is the only explanation I have so far. > > On Mon, Jun 23, 2008 at 5:52 PM, Ryan Moquin <[EMAIL PROTECTED]> > wrote: > > Ohhhh ok, that was my initial thought, but then I decided it read as > though > > I could actually get it from my bean component without modifiying the > > source. No problem, now that I follow you.. I'll go ahead and try it. > > > > Out of curiosity though, if my bean is sending a message to itself for > some > > reason.. isn't that a sign of a bigger problem? I'm trying to send a > > message to my jms component.... > > > > On Mon, Jun 23, 2008 at 10:59 AM, Guillaume Nodet <[EMAIL PROTECTED]> > wrote: > > > >> Sorry, I was suggesting that you modify the BeanEndpoint, recompile > >> the component and install it instead of the old one. > >> You can compile 3.2.x branch by checking it out from; > >> > http://svn.apache.org/repos/asf/servicemix/smx3/branches/servicemix-3.2 > >> Then run: > >> mvn install -Pstep1 -Dmaven.test.skip=true > >> mvn install -Pstep2 -Dmaven.test.skip=true > >> You may be able to simply hack the component and recompile it without > >> compiling the whole tree: > >> cd deployables/serviceengines/servicemix-bean > >> mvn install > >> > >> On Mon, Jun 23, 2008 at 4:52 PM, Ryan Moquin <[EMAIL PROTECTED]> > >> wrote: > >> > I feel dumb asking this, but I've been looking at the source code and > I'm > >> > not sure how to test out your suggestion? How am I able to retrieve > the > >> > current request? It looks like it's contained in a parent object that > >> isn't > >> > accessible to my bean? > >> > > >> > On Mon, Jun 23, 2008 at 6:01 AM, Guillaume Nodet <[EMAIL PROTECTED]> > >> wrote: > >> > > >> >> Could you please test something ? > >> >> In the BeanEndpoint, save the old value for the currentRequest.get() > >> >> in a local variable before setting it to the new value, and instead > of > >> >> setting it to null after processing, set it back to the old value. > It > >> >> may fix the problem ... > >> >> > >> >> On Mon, Jun 23, 2008 at 11: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/ > >> >> > > >> >> > >> >> > >> >> > >> >> -- > >> >> Cheers, > >> >> Guillaume Nodet > >> >> ------------------------ > >> >> Blog: http://gnodet.blogspot.com/ > >> >> > >> > > >> > >> > >> > >> -- > >> Cheers, > >> Guillaume Nodet > >> ------------------------ > >> Blog: http://gnodet.blogspot.com/ > >> > > > > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Blog: http://gnodet.blogspot.com/ >
