Win a copy of The Little Book of Impediments (e-book only) this week in the Agile and Other Processes forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Error faced while using the Java Compute node. ( JDBC connection and Pooling)

 
Pushkar Mahamuni
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I am facing below error. Scenario explained below
1) In the message flow we are receving the JSON request through HttpInput node
2) The Java compute node is checking wether the request is present in the Db or not. If present then update and if not insert.
3) We are testing this component byJava module which inject instruction after every click.
4) To serve above reason we have deployed the 9 additional instances of the flow.Th number connection pool in the configrable property is increaed to 10.
5) As a result of above the first two instruction getting failed and after third request the connection getting estblished and works fine. Below is the error received -->
Communication link failure. (Read timed out), SQLState value: 08S01, vendor's error code: -99999,
6) I tried increasing the flow instances and increasing connection pool size.But No luck.
We are using JDBC Type-4 driver.. Below is the detailed eror log
03 Mar 2014 08:07:03,803 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] Code: 5000 ResponseMessage : Unable to Connect to the database [BIPmsgs:6233]BIP6233E: An error occurred in node: Broker 'some_broker'; Execution Group 'some exec group'; Message Flow 'com.xxxx.customer.createUpdate.XXXX_CM_SYNCCUSTOMER'; Node 'some_node'; Node Type 'XXXX_CUS_CreateUpdateCustomer_JavaCompute There was a problem establishing a connection to the given database URL: jdbc:as400://xxxxx.xxxx.com;naming=system;prompt=false;transaction isolation=none;user=xxxxxx;password=xxxxxxxx; Exception details: error message: Communication link failure. (Read timed out), SQLState value: 08S01, vendor's error code: -99999, stack trace: [com.ibm.as400.access.JDError.throwSQLException(JDError.java:528)
com.ibm.as400.access.AS400JDBCConnection.sendAndReceive(AS400JDBCConnection.java:2646)
com.ibm.as400.access.AS400JDBCConnection.sendAndReceive(AS400JDBCConnection.java:2559)
com.ibm.as400.access.JDTransactionManager.setAutoCommit(JDTransactionManager.java:539)
com.ibm.as400.access.AS400JDBCConnection.setAutoCommit(AS400JDBCConnection.java:2692)
com.ibm.as400.access.AS400JDBCConnectionHandle.setAutoCommit(AS400JDBCConnectionHandle.java:1108)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:76)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:602)
com.ibm.broker.jdbctype4.connpool.ConnectionPoolWorker.run(ConnectionPoolWorker.java:573)]

The node was unable to establish a connection to the given database URL.

Contact your IBM Integration Bus administrator. : Problem encountered obtaining JDBC connection2014-03-03 08:07:03.569
03 Mar 2014 08:07:12,663 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] Customer Id : '95743 , Id : 350 , 2014-03-03 08:07:12.663
03 Mar 2014 08:07:12,663 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] ResponseCode: 5000 ResponseMessage : Unable to Connect to the database [BIPmsgs:6233]BIP6233E: An error occurred in node: Broker 'some_broker'; Execution Group 'some exec group'; Message Flow 'com.xxxx.customer.createUpdate.XXXX_CM_SYNCCUSTOMER'; Node 'some_node'; Node Type 'XXXX_CUS_CreateUpdateCustomer_JavaCompute There was a problem establishing a connection to the given database URL: jdbc:as400://xxxxxx.xxxx.com;naming=system;prompt=false;transaction isolation=none;user=xxxxx;password=xxxxxxxx; Exception details: error message: Communication link failure. (Read timed out), SQLState value: 08S01, vendor's error code: -99999, stack trace: [com.ibm.as400.access.JDError.throwSQLException(JDError.java:528)
com.ibm.as400.access.AS400JDBCConnection.sendAndReceive(AS400JDBCConnection.java:2646)
com.ibm.as400.access.AS400JDBCConnection.sendAndReceive(AS400JDBCConnection.java:2559)
com.ibm.as400.access.JDTransactionManager.setAutoCommit(JDTransactionManager.java:539)
com.ibm.as400.access.AS400JDBCConnection.setAutoCommit(AS400JDBCConnection.java:2692)
com.ibm.as400.access.AS400JDBCConnectionHandle.setAutoCommit(AS400JDBCConnectionHandle.java:1108)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:76)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:602)
com.ibm.broker.jdbctype4.connpool.ConnectionPoolWorker.run(ConnectionPoolWorker.java:573)]

The node was unable to establish a connection to the given database URL.

Contact your IBM Integration Bus administrator. : Problem encountered obtaining JDBC connection2014-03-03 08:07:12.663
03 Mar 2014 08:07:16,866 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] Customer Id : '95743 , Id : 350 , 2014-03-03 08:07:16.866
03 Mar 2014 08:07:17,335 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] ResponseCode: 1001 ResponseMessage : Successfull 2014-03-03 08:07:16.866
03 Mar 2014 08:28:58,109 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] Customer Id : '95743 , Id : 350 , 2014-03-03 08:28:58.109
03 Mar 2014 08:28:58,516 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] ResponseCode: 1001 ResponseMessage : Successfull 2014-03-03 08:28:58.109
03 Mar 2014 08:50:49,275 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] Customer Id : '18385 , Id : 110 , 2014-03-03 08:50:49.213
03 Mar 2014 08:50:51,099 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] ResponseCode: 1001 ResponseMessage : Successfull 2014-03-03 08:50:49.213
03 Mar 2014 08:50:52,658 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] Customer Id : '18385 , Id : 110 , 2014-03-03 08:50:52.658
03 Mar 2014 08:51:08,506 INFO [com.xxxx.customer.createUpdate.XXXX_CUS_SYNCCUSTOMER_TMS] ResponseCode: 5001ResponseMessage :Communication link failure. (Read timed out) 2014-03-03 08:50:52.658
 
amit punekar
Ranch Hand
Posts: 544
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello,

I think you should first try to ping to the Database machine. This will help in proving the connectivity between broker and database server.


regards,
Amit
 
Roger Sterling
Ranch Hand
Posts: 426
Eclipse IDE Fedora Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
http://www-01.ibm.com/support/docview.wss?uid=nas8N1016313

You need to take a service trace to get the underlying return code which will tell you what you need to do to fix the root cause. Also, you can look in /var/mqsi/components/broker_name/execution_group_uuid for the stdout and stderr files which may yield more information.


IIB is an ESB. Even though it has Java Compute Nodes, you won't find many people that have the necessary configuration experience to help with IIB. You might post in SOA ESB forum here or look at http://soabus.org .

Run mqsireportproperties to list out the configurable service for JDBC, then post the details back here.


Unless you have a real need to globally coordinate transactions , you really shouldn't be using Type 4 connections. If all you want is to connect to the database, use non-XA driver.

http://pic.dhe.ibm.com/infocenter/wmbhelp/v9r0m0/index.jsp?topic=%2Fcom.ibm.etools.mft.doc%2Fah61335_.htm

If you don't know the difference between Type 4 and non-XA, you really should attend the Administrators training. ODBC is more efficient, and you may consider using ESQL Compute nodes to perform your database access.


Make one instance of the flow work well, before you increase the number of instances of the flow. If one instance won't work well, ten instances work less well times ten.
 
Roger Sterling
Ranch Hand
Posts: 426
Eclipse IDE Fedora Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
amit punekar wrote:Hello,

I think you should first try to ping to the Database machine. This will help in proving the connectivity between broker and database server.


regards,
Amit


Connection pool connections timeout. The root cause is that the pooled communication connection has no action in a period of time, and the network switch shuts down the connection.
 
Pushkar Mahamuni
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks all for your replies. But it did not solved the problem perfectly.
1.Another problem which I have found whenver the coomunication link failure issue occurs after that the msg flow thead hungs ,so if you any transaction after that it wont respond. So we have to stop and start the Execution group,then only it will work for next transactions.Unfortuanately we can't predict when it can happen.
2. For above problem I have appied the below solution:
Solution: We are using AS400Db and JDBC connection. I came accros the link link _http://doctorjw.wordpress.com/2010/05/18/jdbc-and-the-jt400-jar/., which explians that the issue is with socket timeout and the version of drivers. So currently I have used latest 8.2 version of Jtopen drivers and set the socket timeout parameter in mqsicreateconfigproperites.
3. So how can we do connection pool release in case we came accross stale connection/communication link failure and avoid restarting the Execution group?
 
Pushkar Mahamuni
Greenhorn
Posts: 14
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hello Guys,
Has anyone gone through the link _http://doctorjw.wordpress.com/2010/05/18/jdbc-and-the-jt400-jar/ which explains that the issue lies with the Database AS400 and the drivers. I have set the socket timeout parameter in mqsiconfigproperties. It is working well. Can someone please throw some more light on the article?


 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic