DB2 - Problem description
Problem IT03502 | Status: Closed |
WLB ENABLED JCC CLIENTS CONNECTING TO PURESCALE SERVERS HAVE LATENCY ON ALL SUBSEQUENT QUERIES AFTER "HALT -Q" ON ONE MEMBER | |
product: | |
DB2 FOR LUW / DB2FORLUW / A50 - DB2 | |
Problem description: | |
This problem is specific to pureScale instances and JCC clients. The DB2 server keeps on returning the same server list which have both the good and bad servers even after one of the member is powered off suddenly by some unexpecting incidents(can be simulated by running "halt -q"). As a result, the client will keep on testing the bad server within each transaction in turn results in a latency. Here is a sample trace from a JCC client: [jcc]findBestSysplexMember [time:2014-06-16-21:09:46.896][Thread:Thread-14][tracepoint:200] findBextSysplexMember, test and select - [Lcom.ibm.db2.jcc.t4.rb;@4ea74ea7 [jcc][t4] [time:2014-06-16-21:09:46.896][Thread:Thread-14][tracepoint:111] Connection isClosed: false. getApplicableTimeout (false) returning: 5000 [jcc]findBestSysplexMember [time:2014-06-16-21:09:46.896][Thread:Thread-14][tracepoint:211] Testing member - {SWLBN@4eb14eb1: MEMB1/192.168.1.40 50000 0 NaN false 10 4 0 43 0 true member: 0 timeToDeadLine: 5000 [jcc][t4] [time:2014-06-16-21:09:51.896][Thread:Thread-14][tracepoint:111] Connection isClosed: false. getApplicableTimeout (false) returning: 5000 [jcc]findBestSysplexMember [time:2014-06-16-21:09:51.896][Thread:Thread-14][tracepoint:211] Testing member - {SWLBN@4ebf4ebf: MEMB2/192.168.1.41 50000 0 NaN false 10 4 1 2 0 true member: 1 timeToDeadLine: 5000 The length of the latency depends on the JCC property memberConnectTimeout / loginTimeout. This problem can happen in following scenario: 1. Setup a Java application with following parameters: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++ Class.forName("com.ibm.db2.jcc.DB2Driver"); properties.setProperty("user", userName); properties.setProperty("password", password); properties.setProperty("enableSeamlessFailover", "true"); properties.setProperty("enableSysplexWLB", "yes"); properties.setProperty("loginTimeout", "5"); Connection conn = (DB2Connection) DriverManager.getConnection( URL, properties); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++ 2. The java application firstly connects to member 0 3. Prepare statements 4. Calls executeQuery() to execute the statements => all works fine 5. Run "halt -q" on member 0 6. The java application calls executeQuery() to execute an statement 7. Java applicaton gets java.net.SocketTimeoutException: Read timed out ==> delays for loginTimeout seconds 8. Java applicaton calls executeQuery() to execute an statement again 8.1 JCC tests member 0 ==> failed, results in latency of loginTimeout seconds 8.2 JCC tests member 1 ==> succeeds 9. call executeQuery() to execute an statement again, delays for loginTimeout seconds because of testing member 0. 10. All subsequent executeQuery() delays for loginTimeout seconds because of testing member 0. | |
Problem Summary: | |
**************************************************************** * USERS AFFECTED: * * The users who running WLB enabled JCC clients connecting to * * a pureScale server. * **************************************************************** * PROBLEM DESCRIPTION: * * See Error Description * **************************************************************** * RECOMMENDATION: * * Upgrade to V10.5 FP6 or later versions. * **************************************************************** | |
Local Fix: | |
N/A | |
Solution | |
The problem is firstly fixed on V10.5 FP6. | |
Workaround | |
not known / see Local fix | |
Timestamps | |
Date - problem reported : Date - problem closed : Date - last modified : | 31.07.2014 26.08.2015 26.08.2015 |
Problem solved at the following versions (IBM BugInfos) | |
Problem solved according to the fixlist(s) of the following version(s) | |
10.5.0.6 |