ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General IBM MQ Support » isNPMClassHigh looping

Post new topic  Reply to topic
 isNPMClassHigh looping « View previous topic :: View next topic » 
Author Message
post_rdv
PostPosted: Mon Sep 13, 2004 3:58 am    Post subject: isNPMClassHigh looping Reply with quote

Newbie

Joined: 13 Sep 2004
Posts: 2
Location: Brussels

Hello,

We are in the final phase of upgrading MQ5.2 to Websphere MQ5.3 (CSD6) but we have a great problem on two NT4 servers (Production Environment). One of our web applications (running in Websphere Application Server), since the upgrade, is crashing after some minutes.
It seems the JVM running the application falls down out of memory.

In our acceptance environment, which one is exactly the same than production (same WAS version, NT version, Application version and WSMQ version), the application is running without problem.

StackDump analysis shows that MQ series library is doing recursive calls till the final exit:

3XMTHREADINFO "Thread-29" (TID:0x5648678, sys_thread_t:0x10693C00, state:R, native ID:0x531) prio=5
4XESTACKTRACE at java.lang.Throwable.fillInStackTrace(Native Method)
4XESTACKTRACE at java.lang.Throwable.<init>(Throwable.java(Inlined Compiled Code))
4XESTACKTRACE at java.lang.Exception.<init>(Exception.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQException.<init>(MQException.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQManagedObject.inquire(MQManagedObject.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQManagedObject.getInt(MQManagedObject.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQQueue.isNPMClassHigh(MQQueue.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQQueue.isNPMClassHigh(MQQueue.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQQueue.isNPMClassHigh(MQQueue.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQQueue.isNPMClassHigh(MQQueue.java(Compiled Code))
4XESTACKTRACE at com.ibm.mq.MQQueue.isNPMClassHigh(MQQueue.java(Compiled Code))
....
.... (million times loop)
....

As it is the Production environment, we have then applyed a rollback procedure to MQ 5.2 and the application is now running correctly... but it is a temporary solution.


Is anyone knows that kind of error (and solved it) or have an idea about change to do?

thanks for help

J-F
_________________
Malaise Jean-François
AUSY Consultant
Certified Websphere MQ Administrator
Back to top
View user's profile Send private message
JasonE
PostPosted: Mon Sep 13, 2004 6:14 am    Post subject: Reply with quote

Grand Master

Joined: 03 Nov 2003
Posts: 1220
Location: Hursley

Take a trace, report to IBM service - I think it relates to an odd definition for an alias or remote queue, but thats a guess.
Back to top
View user's profile Send private message
post_rdv
PostPosted: Mon Sep 13, 2004 8:19 am    Post subject: Reply with quote

Newbie

Joined: 13 Sep 2004
Posts: 2
Location: Brussels

FYI

I found the solution the reason of the loop but without more certitude:

I have the following definitions on the queue manager QM1:
a remote queue:
- QName (Inquiry) RNAME (Inquiry) RQMNAME(QM2) Xmitq (XQ.QM2)
and a Queue Manager alias:
- QNAME (QM2) RQMNAME(QM2) XmitQ(XQ.QM2)

By activing the JAVA tracing, we found that the application, by putting message in Inquiry, enter in the loop of call com.ibm.mq.MQQueue.isNPMClassHigh

This method checks where the messages must be put by resolving MQ Object names. in the code of IsNPMClasshigh method,we have seen:

....
if(i == 6) { //Remote Queue
int ai1[] = new int[2];
byte abyte1[] = new byte[96];
ai1[0] = 2017;
ai1[1] = 2018;
mqqueue.inquire(ai1, null, abyte1);
String s1 = new String(abyte1);
String s2 = s1.substring(0, 47);
String s3 = s1.substring(4;
if(Trace.isOn)
Trace.trace(2, this, "remote queue, resolves to=" + s2 + "/" + s3);
MQQueue mqqueue2 = mgr.accessQueue(s1, 32);
boolean flag6 = mqqueue2.isNPMClassHigh();
return flag6;
}

...

Then, if my comprehension of the code is correct, we have:
- remote, resolves to=QM2 / Inquiry
following by a recursive call of isNPMClassHigh for the name QM2
- remote, resolves to=QM2 /
and entering in the loop:
- remote, resolves to=QM2 /
- remote, resolves to=QM2 /
- remote, resolves to=QM2 /
..

I suppress the Queue Maanger alias definiton and now the application is running in WSMQ5.3...
_________________
Malaise Jean-François
AUSY Consultant
Certified Websphere MQ Administrator
Back to top
View user's profile Send private message
JasonE
PostPosted: Mon Sep 13, 2004 8:50 am    Post subject: Reply with quote

Grand Master

Joined: 03 Nov 2003
Posts: 1220
Location: Hursley

Definitely sounds like something worth reporting! Well found
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Page 1 of 1

MQSeries.net Forum Index » General IBM MQ Support » isNPMClassHigh looping
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.