2011-05-16 1 views
0

JDBCを使用してTeradataサーバーを照会しています。最大100件の同時リクエストがあり、それぞれ1つは新規接続を使用し、最後はそれを閉じます。数時間の作業の後、要求を実行しているスレッドの一部が無期限にスタックされます。最終的にシステムを再起動する必要があります。コールスタックの検査から 、私はスレッドがソケット読ん状態にあることを確認し、接続クローズ声明またはを準備する際ことは、それが起こる:JDBC Teradataリクエストに永続的にぶら下がっているスレッド

ケース1:

java.lang.Thread.State: RUNNABLE 
       at java.net.SocketInputStream.socketRead0(Native Method) 
       at java.net.SocketInputStream.read(SocketInputStream.java:129) 
       at com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF.read(TDNetworkIOIF.java:649) 
       at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:818) 
       at com.teradata.jdbc.jdbc_4.statemachine.StatementReceiveState.action(StatementReceiveState.java:125) 
       at com.teradata.jdbc.jdbc_4.statemachine.StatementController.runBody(StatementController.java:112) 
       at com.teradata.jdbc.jdbc_4.statemachine.StatementController.run(StatementController.java:103) 
       at com.teradata.jdbc.jdbc_4.Statement.executeStatement(Statement.java:340) 
       at com.teradata.jdbc.jdbc_4.Statement.prepareRequest(Statement.java:507) 
       - locked <0x00002aab4f787518> (a com.teradata.jdbc.jdbc_4.PreparedStatement) 
       at com.teradata.jdbc.jdbc_4.PreparedStatement.<init>(PreparedStatement.java:66) 
       at com.teradata.jdbc.jdbc_4.TDSession.createPreparedStatement(TDSession.java:723) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalPreparedStatement.<init>(TeraLocalPreparedStatement.java:89) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalConnection.prepareStatement(TeraLocalConnection.java:333) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalConnection.prepareStatement(TeraLocalConnection.java:152) 
... 

ケース2:

java.lang.Thread.State: RUNNABLE 
       at java.net.SocketInputStream.socketRead0(Native Method) 
       at java.net.SocketInputStream.read(SocketInputStream.java:129) 
       at com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF.read(TDNetworkIOIF.java:649) 
       at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:818) 
       at com.teradata.jdbc.jdbc_4.io.TDPacketStream.readStream(TDPacketStream.java:794) 
       at com.teradata.jdbc.jdbc.GenericLogOffRspState.action(GenericLogOffRspState.java:66) 
       at com.teradata.jdbc.jdbc.GenericLogoffController.run(GenericLogoffController.java:43) 
       - locked <..> (a com.teradata.jdbc.jdbc_4.io.TDNetworkIOIF) 
       at com.teradata.jdbc.jdbc_4.TDSession.close(TDSession.java:476) 
       at com.teradata.jdbc.jdbc_3.ifjdbc_4.TeraLocalConnection.close(TeraLocalConnection.java:259) 
... 

私はJDBC Teradataドライババージョン13.10.00.10を使用しています。

なぜ起こるのか? この問題は、私たちにとって非常に苦痛であり、何か助けに感謝します。

ありがとうございます!

答えて

2

JDBCドライバの最新のパッチリリースにアップグレードしようとしましたか? 13.10.00.18は2011年4月12日にリリースされました。リリース13.10.00.15には、マルチスレッド同時ログオン試行でGSSExceptionをスローする問題を修正するためのパッチが含まれていました。

これで問題が解決されず、クライアント/企業がTeradataのお客様である場合は、Teradataグローバルサポートセンターでインシデントを開くことをお勧めします。

+0

ありがとう、私はちょうどそれを再現するための簡単なコードを書いて、おそらく後で事件を開くでしょう。 –

関連する問題