Reputation: 11
Recently we upgraded our MQ server to 8.0.0.5 and after that our application is not working . Getting the below error log from Server console.
Getting a message terminated in the Servlet for the following reason - MQRC_NO_MSG_AVAILABLE
*********************STACK TRACE************************
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2033'.
at com.ibm.mq.MQDestination.getInt(MQDestination.java:683)
at com.ibm.mq.MQDestination.get(MQDestination.java:473)
at support.operations.inventory.mq.MQFWServlet.getMessage(MQFWServlet.java:77)
at support.operations.inventory.mq.MQFWServlet.init(MQFWServlet.java:115)
at support.operations.inventory.list.InvOnlineList.fetchData(InvOnlineList.java:75)
at support.operations.inventory.servlets.SearchServlet.verifiedPost(SearchServlet.java:169)
at support.operations.inventory.servlets.MasterServlet.doPost(MasterServlet.java:439)
at support.operations.inventory.servlets.MasterServlet.doGet(MasterServlet.java:363)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1232)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:1385)
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:194)
at support.operations.inventory.servlets.MasterServlet.forwardServlet(MasterServlet.java:621)
at support.operations.inventory.servlets.ReRouteServlet.verifiedPost(ReRouteServlet.java:254)
at support.operations.inventory.servlets.MasterServlet.doPost(MasterServlet.java:439)
at support.operations.inventory.servlets.MasterServlet.doGet(MasterServlet.java:363)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:575)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1232)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:781)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:480)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1114)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3928)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1007)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1817)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:463)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:530)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:316)
From the WebSphere logs I can see this errror message :
[8/31/16 14:40:11:249 GMT] 000000a9 ThreadMonitor W WSVR0605W: Thread "WebContainer : 3" (000000e5) has been active for 603065 milliseconds and may be hung. There is/are 2
thread(s) in total in the server that may be hung.
at java.lang.Object.wait(Native Method)
at java.lang.Object.wait(Object.java:196)
I would need a help for this issue.
Upvotes: 1
Views: 230
Reputation: 7506
I see you are doing Pub/Sub. I've seen some pretty flaky things if the get on a subscription is less than 2.5 seconds. I've had it hang on me for both MQ v7.5.0.5 and MQ v8.0.0.4. Currently, I use 5 seconds and all is fine.
I would strongly suggest that you open a PMR with IBM.
Upvotes: 0
Reputation: 2698
NO_MSG_AVAILABLE
(2033) means just that - your application issued an MQGET
and no message was found (satisfying the selection criteria, including message id/correlation id and/or whatever else if anything was specified.)
I would venture a guess that you issue an MQGET
with MQGMO_WAIT
, and you set timeout to a pretty high value (or UNLIMITED
.) As a result of no message being available, you end up hanging the thread. Not MQ, but the application itself.
In short, I don't see anything wrong with MQ in these messages. As usual with upgrades or any changes in the environment, check what else has been changed. Check what happened to the message sender.
And avoid long waiting in a Web container (UNLIMITED
is out of bounds, certainly.) Ideally, do it asynchronously. Or at least cap the waiting - for example, a timeout of 15 seconds is plenty, as a rule of thumb. If your backend can't respond within 15 seconds, something is wrong. And many Web applications would not tolerate even a 15 seconds delay.
Upvotes: 2