Fix CRJAZ1579E - "Execution failed due to a distribution protocol error that caused deallocation of the conversation. A DRDA Data Stream Syntax Error was detected" ?
I'm getting an error trying to test the connection to DB2 on step 3 of the JTS setup wizard for RTC 4.0.1:
The configuration test resulted in errors. Resolve the errors to continue. For more details, open the help system and search for CRJAZ1579E.
[jcc][t4][2034][11148][4.14.88] Execution failed due to a distribution protocol error that caused deallocation of the conversation. A DRDA Data Stream Syntax Error was detected. Reason: 0x3. ERRORCODE=-4499, SQLSTATE=58009
[jcc][t4][2034][11148][4.14.88] Execution failed due to a distribution protocol error that caused deallocation of the conversation. A DRDA Data Stream Syntax Error was detected. Reason: 0x3. ERRORCODE=-4499, SQLSTATE=58009
(yes, that last paragraph is actually repeated twice)
I've installed RTC 4.0.1 on Windows Server 2008 x64, am using Tomcat, and have followed all the steps to create the databases, grant access, etc in the DB2 server (on another Win Server 2008 x64 machine). DB2 is a fresh install from the official site, v9.7 (fixpack 7, I think). Changing the JDBC location to an incorrect IP or port changes the error message as expected, but changing the username or password doesn't.
Googling for the error + errorcode + sqlstate gives me http://www-01.ibm.com/support/docview.wss?uid=swg21598736 which says it might be an out of date JDBC driver for DB2. I have no idea which JDBC driver RTC 4.0.1 includes because I couldn't find one in the jre/ directory of RTC, but I managed to find C:\Program Files\IBM\SQLLIB\java\db2jcc4.jar on the DB2 server and I put that into C:\IBM\jazz\server\db2 (using the instructions on the previous page, I can see that this has a version of "com.ibm.net.SocketKeepAliveParameters
IBM Data Server Driver for JDBC and SQLJ 4.13.80"). I restarted the server, of course.
When that didn't help, I used the workaround described in https://jazz.net/library/article/1173/ to specify the JDBC driver explicitly by setting an environment variable of DB2_ABSPATH=C:\IBM\jazz\server\db2 and restarted the server from a command prompt which I made sure had the DB2_ABSPATH variable set.
That also didn't help, and I'm pretty much out of ideas. How can I fix this?
One answer
Solved! It was a networking routing/configuration error.
Before opening the PMR, I decided to test if my laptop could connect to the DB2 database; it was able to.
For some reason, with certain incorrect IPs, the error message was correctly "unable to connect to IP x.x.x.x", but with the particular (entirely valid, and reachable from other machines) IP I was using, and some IPs above and below it (but crucially not when deleting the last digit of the "correct" IP, which is what I tried), that arcane error message appeared.
Once I realised that pings to the DB server IP from the RTC server were timing out (obvious thing to try in hindsight, but the error message situation threw me off), I realized it must been a network thing; once the networking issue was fixed and pings got through fine, I got the expected "test successful but tables don't exist yet" message.
Hopefully this helps someone else out in future.
Comments
Karl Weinert
JAZZ DEVELOPER Jan 03 '13, 8:22 a.m.Caspar Krieger
Jan 03 '13, 9:08 p.m.Karl Weinert
JAZZ DEVELOPER Jan 04 '13, 9:49 a.m.Karl Weinert
JAZZ DEVELOPER Jan 04 '13, 9:49 a.m.Karl Weinert
JAZZ DEVELOPER Jan 04 '13, 3:59 p.m.Caspar Krieger
Jan 06 '13, 9:22 p.m.