Tuesday, April 17, 2012

Whose problem is it anyway?


Growing up in India cable TV did not make it to my home until my high school days. One of the early shows that caught my attention was the very funny syndicated improvisational game show – "Whose line is it anyway?"  In the eponymous round contestants on their turn use their creative instincts and quick-wittedness to “explain or demo” random and quirky looking props. The toughest OMS problems call for that same kind of creativity, (although the results or the scenario itself is far from being funny) and for someone to step up and make sense of the problem (random or otherwise) with a complex software solution that has a seemingly quirky side to it.

When a MQ Queue Full is not an MQ issue –
Here’s a typical problem encountered at a Sterling OMS implementation in the testing phase. A certain transaction say CREATE_ORDER fails with the following exception and stack trace –
com.yantra.interop.services.jms.JMSProducer$RetryException: com.ibm.msg.client.jms.DetailedInvalidDestinationException: JMSWMQ2007: Failed to send a message to destination 'CREATE_ORDER_QUEUE'. JMS attempted to perform an MQPUT or MQPUT1; however WebSphere MQ reported an error. Use the linked exception to determine the cause of this error.
        at com.yantra.interop.services.jms.JMSProducer.sendJMSMessage(JMSProducer.java:852)
       at com.yantra.interop.services.jms.JMSProducer.access$700(JMSProducer.java:63)
......
JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2053' ('MQRC_Q_FULL'). [system]: JMSProducer
com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2053' ('MQRC_Q_FULL').

At first glance, this seems to be an MQ issue calling for the testing team to make a beeline to the WebSphere MQ administrator’s desk. However, a more thorough investigation calls for many additional checks to be done and questions to be answered before pinging the MQ Admin.
a.       Has the queue been sized appropriately for the environment?
b.      Are there processes – Sterling or otherwise - attached to and consuming messages from the queue?
c.       Are the messages from the queue being consumed at a much slower rate than incoming messages? 

Other Sterling OMS system and performance problems would entail weeding through many more questions such as
a.       Is it a browser issue?
b.      Is it a database tuning issue?
c.       Is it an Appserver configuration problem?
d.      Does the solution/product scale to meet our needs? 

Failure to consider all these questions to identify a root cause often leads to the conclusion that most Sterling OMS system problems are simply “a Sterling issue” (the industry is still to term this an IBM issue perhaps reserving that for their other woes on “traditional” products on the IBM tech stack). Whose problem is that anyway? Or to be more precise between an Implementation team – developers and testers, System admin team - DBAs, Appserver, JMS, AIX Admins and IBM Support who is going to own it and drive it to resolution? Thus, was born the role of a services focused Yantra/Sterling Performance Engineer in 2004 (Yantra as it was known up until 2005 the Sterling Commerce acquisition). The name Performance Engineer or PE has stuck although not all issues require performance tuning but because nothing else fitted either. 

How Performance Engineers are like Economists –
Steven Levitt in his best-seller SuperFreakonomics describes economists as being trained to be cold-blooded to calmly discuss trade-offs involved in a global catastrophe while the rest of us non-economists are a bit more excitable. A good Performance Engineer (Sterling or otherwise) is a lot like that economist and although he is not called on to explain implications of a global catastrophe like an earthquake or global-warming (a production outage being the biggest catastrophe that a PE is called on to solve) he needs to analyze issues calmly and keep emotions – blame, paralysis, confusion, panic, ego –  in check while collaborating with the various teams - business users, System Administrators, developers and Support to find a resolution. 

Had an economist been regarded as highly as a doctor or an engineer in the Indian middle class psyche perhaps I may have gone on to become one. Now 8 years since I first started as an in-house PE in the QA organization and 12 years since I started there as a Support Engineer I am still solving Sterling issues and still loving it.  This blog attempts to share what I have learnt over the years (and still learning) on implementing, fixing and tuning Sterling applications. Although it may be difficult to explore all Sterling issues in a simplistic Q & A format like that of asktom site hosted by the legendary Tom Kyte (the first “technology” guru I was and still am in awe of)  I shall experiment to see what best can be shared in this format. I am hoping that I can review your questions, try and answer some (or at least the most interesting and relevant ones) and other topics in these pages and most importantly nurture the inner "PE" in each of you.  

Do let me know your comments on this post & format and what Sterling topics you want to see covered (It will keep me from boring you with personal stories and not-particularly-useful insights).


11 comments:

  1. good reads on websphere infrastructure(sterling related),
    debugging tactics
    are some of the topics I would like to see.
    Thanks for the article Ranjith.

    ReplyDelete
    Replies
    1. Thank you for the feedback Tech Geek. I will try and incorporate your feedback

      Delete
  2. Hi,

    Is their any training available for IBM OMS

    Please send the details to rasein@yahoo.com

    Thanks
    Rafiq

    ReplyDelete
  3. Very helpful, keep it up Ranjith. Would like to see more on custom tables which help in auditing. Dunno whether its possible or not

    ReplyDelete
  4. Hello Ranjith,

    I am looking for db tuning article for sterling. My guess is db is being the bottleneck for us. We use both SOM & COM.I see integration servers and agents servers spending more time at db

    ReplyDelete
  5. This comment has been removed by the author.

    ReplyDelete
  6. This comment has been removed by the author.

    ReplyDelete
  7. Hi Ranjith,
    Thank You for your information on OMS, actually I have a question on order status in OMS, in there any possibility to change status from created to Shipped in OMS(using call center or from Application Console). Actually I am doing configuration in between WCS to OMS, if I place order in WCS in it reflects in OMS, I want change status in OMS and send status to WCS
    Please give solution to do this.

    ReplyDelete
  8. Hello Ranjit,
    Your blog is very nice. Thank you for your information on OMS.
    I am facing one issue I have installed sterling 9.3 , websphere 8.5.5 an DB2 10.5 on windows 7.
    I build smcfs.ear and deployed in Websphere application server successfully.
    I opened smcfs console and not able login and login is failing. I have logged in with default credentials(admin/password)
    I am getting the below error.
    [admin]: YFSLoginIPLogger
    2015-07-19 16:54:18,102:ERROR :WebContainer : 9: Login Failed. User [admin] Client IP address[127.0.0.1]

    com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048, SQLERRMC=null, DRIVER=4.16.53

    Please help me out. I tried differnet ways to fix it but no luck.
    Please let me know if you have any idea.
    Thanks in advance.
    Please give the solution to do this
    kodela.suneetha@gmail.com

    ReplyDelete
  9. [admin]: YFSLoginIPLogger
    2015-07-19 16:54:18,102:ERROR :WebContainer : 9: Login Failed. User [admin] Client IP address[127.0.0.1] :









    com.ibm.db2.jcc.am.SqlException: DB2 SQL Error: SQLCODE=-1585, SQLSTATE=54048, SQLERRMC=null, DRIVER=4.16.53

    at com.ibm.db2.jcc.am.fd.a(fd.java:744)

    at com.ibm.db2.jcc.am.fd.a(fd.java:60)

    at com.ibm.db2.jcc.am.fd.a(fd.java:127)

    at com.ibm.db2.jcc.am.to.c(to.java:2771)

    at com.ibm.db2.jcc.am.to.d(to.java:2759)

    at com.ibm.db2.jcc.am.to.a(to.java:2192)

    at com.ibm.db2.jcc.am.uo.a(uo.java:7827)

    ReplyDelete
  10. This comment has been removed by the author.

    ReplyDelete