Sybase NNTP forums - End Of Life (EOL)

The NNTP forums from Sybase - forums.sybase.com - are now closed.

All new questions should be directed to the appropriate forum at the SAP Community Network (SCN).

Individual products have links to the respective forums on SCN, or you can go to SCN and search for your product in the search box (upper right corner) to find your specific developer center.

App using iAnywhere JDBC on linux hanging

3 posts in General Discussion Last posting was on 2010-02-19 16:45:37.0Z
Bill Williams Posted on 2010-02-19 13:04:18.0Z
From: "Bill Williams" <billwilliams@qcsoftware.com>
Newsgroups: ianywhere.public.general
Subject: App using iAnywhere JDBC on linux hanging
Lines: 67
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5843
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
NNTP-Posting-Host: vip152.sybase.com
X-Original-NNTP-Posting-Host: vip152.sybase.com
Message-ID: <4b7e8c52$1@forums-1-dub>
Date: 19 Feb 2010 05:04:18 -0800
X-Trace: forums-1-dub 1266584658 10.22.241.152 (19 Feb 2010 05:04:18 -0800)
X-Original-Trace: 19 Feb 2010 05:04:18 -0800, vip152.sybase.com
Path: forums-1-dub!not-for-mail
Xref: forums-1-dub ianywhere.public.general:7897
Article PK: 6923

We have an application that is running multiple threads to do different
things at the same time on the database that hangs using the iAnywhere
driver on linux. If we run the app with jConnect 5.5, it does not hang and
if we run the app on Windows using iAnywhere it does not hang either;
however, there is a difference between versions on linux and windows.

The linux kernel is Linux batcave.qc.tzo.com 2.6.29.6-server-2mnb #1 SMP Sun
Aug 16 23:47:22 EDT 2009 i686 Intel(R) Xeon(TM) CPU 2.66GHz GNU/Linux.

The database itself is running on a windows server 2003 running SA
11.0.1.2376.

The version of Sybase being used on linux is SA 10.0.1.3974. We've tried
using SA 11.0.1.2376 but are having different problems (could not connect to
database, that's a different post altogether).

Like I said in my initial statement, when we try to run the app on linux
using the iAnywhere JDBC driver, it will hang and it seems to hang trying to
prepare statements which does not make sense. At the bottom of this post I
will put a thread dump with stack traces for each thread. Each thread has
its own connection to the database. One thread will have some locks and
suddenly one of the other threads will block (according to Sybase Central)
against the connection for the thread that has the locks; however, it's on a
prepare statement. The other connections do not show blocked in Sybase
Central; however, in the dump below you can see they are also hung at the
nativePrepareStatement. If I try to cleanly terminate my program, it starts
to exit and then stops because the connections are still trying to do stuff.
I then terminate the connection that is blocked according to Sybase Central
and then everything frees up and the app cleanly exits.

If we switch over to jConnect on the linux computer, the app runs fine.

I have ran the app on the windows server running 11.0.1.2376 using the
iAnywhere JDBC and it runs fine there as well.

Java on linux and windows is 1.6.0_18.

Here is the thread/stack dump:

Thread 16 is the thread with the locks and should be processing through a
loop and it stops along with everything else. The connection with thread 18
is the one that actually show blocked in Sybase Central. As you can see,
there are multiple threads all sitting at the
ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement method.

This dump was created about 30 seconds after the program hung so this dump
is not what I happened to hit as it ran. I would get the same results over
and over again if I kept dumping this data.

Dumping thread data...
Thread Thread
Id Name
------------------- --------------------
0000000000000000002 Reference Handler
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
0000000000000000016 generateReplens
ianywhere.ml.jdbcodbc.jdbc3.IIResultSet.next(Native Method)
ianywhere.ml.jdbcodbc.jdbc3.IResultSet.next(IResultSet.java:458)
LiaOrderMgr.GenerateReplenishments.action(GenerateReplenishments.java:160)
Products.QcApp.TaskThread.run(TaskThread.java:388)
0000000000000000019 releaseMus
ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(Native
Method)
ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:393) Library.Database.DbTable.get(DbTable.java:346) Library.Database.DbTable.get(DbTable.java:372) Library.Database.DbTable.get(DbTable.java:429) LiaOrderMgr.ReleaseHeldMus.action(ReleaseHeldMus.java:81) Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000017 ageReplens ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod) ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:393) Library.Database.DbSql.prepareStatement(DbSql.java:509) Library.Database.DbSql.loadParams(DbSql.java:407) Library.Database.DbSql.executeUpdate(DbSql.java:200) LiaOrderMgr.AgeReplenishments.action(AgeReplenishments.java:109) Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000020 fileNotifications ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod) ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:382) Library.Database.DbTable.getSingleRow(DbTable.java:595) Library.Database.DbTable.getSingleRow(DbTable.java:554) LiaOrderMgr.OrderFileNotifications.action(OrderFileNotifications.java:56) Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000023 rfMgr read daemon java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711) Library.QcSockets.QcSocket.read(QcSocket.java:540) Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79) Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000008 Tracer Monitor java.util.ArrayList.size(ArrayList.java:177) java.util.AbstractList$Itr.hasNext(AbstractList.java:339) Library.Utils.TracerMsgWriter$MonitorThread.run(TracerMsgWriter.java:640)0000000000000000012 tcpipPortCtrl read daemon java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711) Library.QcSockets.QcSocket.read(QcSocket.java:540) Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79) Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000004 Signal Dispatcher0000000000000000013 tcpipMsgHub read daemon java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711) Library.QcSockets.QcSocket.read(QcSocket.java:540) Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79) Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000015 Pool Monitor java.lang.Object.wait(Native Method) Library.Database.DbConnectionPoolManager$PoolMonitor.run(DbConnectionPoolManager.java:521)0000000000000000021 QcServerSocket Listener java.net.PlainSocketImpl.socketAccept(Native Method) java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390) java.net.ServerSocket.implAccept(ServerSocket.java:453) Library.QcSockets.QcServerSocket.access$000(QcServerSocket.java:38) Library.QcSockets.QcServerSocket$ListenerThread.run(QcServerSocket.java:142)0000000000000000011 Reconnect Monitor java.lang.Object.wait(Native Method) Library.QcSockets.TcpipNet.TcpipNetClient$ReconnectThread.run(TcpipNetClient.java:405)0000000000000000022 Console controls java.lang.Thread.getStackTrace(Thread.java:1436) Library.Utils.Tracer.dumpThreads(Tracer.java:454) Library.Utils.Tracer$ThreadDumpOption.action(Tracer.java:497) Library.Utils.ControlOption.execute(ControlOption.java:252) Library.Utils.Controls$ControlsThread.run(Controls.java:424)0000000000000000001 main java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:485) Products.QcApp.QcApp.qcAppMain(QcApp.java:262) Products.OrderMgr.OrderMgr.main(OrderMgr.java:47)0000000000000000003 Finalizer java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)0000000000000000018 aframePicks ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod) ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:382) Library.Database.DbTable.updateByKey(DbTable.java:897) Packages.DbTables.Sequences.nextval(Sequences.java:123) Packages.DbTables.ActivityLog.insert(ActivityLog.java:155) LiaOrderMgmt.ActivityLogOperation.operationAction(ActivityLogOperation.java:115) Packages.OrderMgmt.OperationListenerList.execute(OperationListenerList.java:59) Packages.OrderMgmt.PickWorkOrderLineOperations.complete(PickWorkOrderLineOperations.java:709) LiaOrderMgr.CompleteAframePicks.action(CompleteAframePicks.java:83) Products.QcApp.TaskThread.run(TaskThread.java:388)Done


Karim Khamis [Sybase iAnywhere] Posted on 2010-02-19 14:15:55.0Z
From: "Karim Khamis [Sybase iAnywhere]" <kkhamis@sybase.com>
User-Agent: Thunderbird 2.0.0.23 (Windows/20090812)
MIME-Version: 1.0
Newsgroups: ianywhere.public.general
Subject: Re: App using iAnywhere JDBC on linux hanging
References: <4b7e8c52$1@forums-1-dub>
In-Reply-To: <4b7e8c52$1@forums-1-dub>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
NNTP-Posting-Host: vip152.sybase.com
X-Original-NNTP-Posting-Host: vip152.sybase.com
Message-ID: <4b7e9d1b$1@forums-1-dub>
Date: 19 Feb 2010 06:15:55 -0800
X-Trace: forums-1-dub 1266588955 10.22.241.152 (19 Feb 2010 06:15:55 -0800)
X-Original-Trace: 19 Feb 2010 06:15:55 -0800, vip152.sybase.com
Lines: 86
X-Authenticated-User: techsupp
Path: forums-1-dub!not-for-mail
Xref: forums-1-dub ianywhere.public.general:7899
Article PK: 6927

Bill,

I have a sneaky suspicion you have run into the problem detailed in QTS
609736. In QTS 609736, the application can hang if connection A is
holding on to table locks while connections B, C, D, ... are waiting for
those table locks, and connection A subsequently calls
Connection.createStatement() while still holding on to the table locks.
Note that all the connection (A,B,C,D,...) have to be from the same JDBC
application. Does that sound like something your app is likely to do? If
so, I can tell you that the fix for QTS 609736 went into SA 11.0.1.2360
and SA 10.0.1.3996. Notice that your SA 11 version of 11.0.1.2376 has
the fix for QTS 609736 while your SA 10 version of 10.0.1.3974 does not.

Karim

Bill Williams wrote:
> We have an application that is running multiple threads to do different
> things at the same time on the database that hangs using the iAnywhere
> driver on linux. If we run the app with jConnect 5.5, it does not hang and
> if we run the app on Windows using iAnywhere it does not hang either;
> however, there is a difference between versions on linux and windows.
>
> The linux kernel is Linux batcave.qc.tzo.com 2.6.29.6-server-2mnb #1 SMP Sun
> Aug 16 23:47:22 EDT 2009 i686 Intel(R) Xeon(TM) CPU 2.66GHz GNU/Linux.
>
> The database itself is running on a windows server 2003 running SA
> 11.0.1.2376.
>
> The version of Sybase being used on linux is SA 10.0.1.3974. We've tried
> using SA 11.0.1.2376 but are having different problems (could not connect to
> database, that's a different post altogether).
>
> Like I said in my initial statement, when we try to run the app on linux
> using the iAnywhere JDBC driver, it will hang and it seems to hang trying to
> prepare statements which does not make sense. At the bottom of this post I
> will put a thread dump with stack traces for each thread. Each thread has
> its own connection to the database. One thread will have some locks and
> suddenly one of the other threads will block (according to Sybase Central)
> against the connection for the thread that has the locks; however, it's on a
> prepare statement. The other connections do not show blocked in Sybase
> Central; however, in the dump below you can see they are also hung at the
> nativePrepareStatement. If I try to cleanly terminate my program, it starts
> to exit and then stops because the connections are still trying to do stuff.
> I then terminate the connection that is blocked according to Sybase Central
> and then everything frees up and the app cleanly exits.
>
> If we switch over to jConnect on the linux computer, the app runs fine.
>
> I have ran the app on the windows server running 11.0.1.2376 using the
> iAnywhere JDBC and it runs fine there as well.
>
> Java on linux and windows is 1.6.0_18.
>
> Here is the thread/stack dump:
>
> Thread 16 is the thread with the locks and should be processing through a
> loop and it stops along with everything else. The connection with thread 18
> is the one that actually show blocked in Sybase Central. As you can see,
> there are multiple threads all sitting at the
> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement method.
>
> This dump was created about 30 seconds after the program hung so this dump
> is not what I happened to hit as it ran. I would get the same results over
> and over again if I kept dumping this data.
>
> Dumping thread data...
> Thread Thread
> Id Name
> ------------------- --------------------
> 0000000000000000002 Reference Handler
> java.lang.Object.wait(Native Method)
> java.lang.Object.wait(Object.java:485)
> java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
> 0000000000000000016 generateReplens
> ianywhere.ml.jdbcodbc.jdbc3.IIResultSet.next(Native Method)
> ianywhere.ml.jdbcodbc.jdbc3.IResultSet.next(IResultSet.java:458)
> LiaOrderMgr.GenerateReplenishments.action(GenerateReplenishments.java:160)
> Products.QcApp.TaskThread.run(TaskThread.java:388)
> 0000000000000000019 releaseMus
> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(Native
> Method)
> ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:393) Library.Database.DbTable.get(DbTable.java:346) Library.Database.DbTable.get(DbTable.java:372) Library.Database.DbTable.get(DbTable.java:429) LiaOrderMgr.ReleaseHeldMus.action(ReleaseHeldMus.java:81) Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000017 ageReplens ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod) ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:393) Library.Database.DbSql.prepareStatement(DbSql.java:509) Library.Database.DbSql.loadParams(DbSql.java:407) Library.Database.DbSql.executeUpdate(DbSql.java:200) LiaOrderMgr.AgeReplenishments.action(AgeReplenishments.java:109) Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000020 fileNotifications ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod) ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:382) L

ibrary.Database.DbTable.getSingleRow(DbTable.java:595) Library.Database.DbTable.getSingleRow(DbTable.java:554) LiaOrderMgr.OrderFileNotifications.action(OrderFileNotifications.java:56) Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000023 rfMgr read daemon java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711) Library.QcSockets.QcSocket.read(QcSocket.java:540) Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79) Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000008 Tracer Monitor java.util.ArrayList.size(ArrayList.java:177) java.util.AbstractList$Itr.hasNext(AbstractList.java:339) Library.Utils.TracerMsgWriter$MonitorThread.run(TracerMsgWriter.java:640)0000000000000000012 tcpipPortCtrl read daemon java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputSt
ream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711) Library.QcSockets.QcSocket.read(QcSocket.java:540) Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79) Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000004 Signal Dispatcher0000000000000000013 tcpipMsgHub read daemon java.net.SocketInputStream.socketRead0(Native Method) java.net.SocketInputStream.read(SocketInputStream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711) Library.QcSockets.QcSocket.read(QcSocket.java:540) Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79) Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000015 Pool Monitor java.lang.Object.wait(Native Method) Library.Database.DbConnectionPoolManager$PoolMonitor.run(DbConnectionPoolManager.java:521)0000000000000000021 QcServerSocket Listener java.net.PlainSocketImpl.socketAccept(Native Method) java.net.PlainSocketImpl.accept
(PlainSocketImpl.java:390) java.net.ServerSocket.implAccept(ServerSocket.java:453) Library.QcSockets.QcServerSocket.access$000(QcServerSocket.java:38) Library.QcSockets.QcServerSocket$ListenerThread.run(QcServerSocket.java:142)0000000000000000011 Reconnect Monitor java.lang.Object.wait(Native Method) Library.QcSockets.TcpipNet.TcpipNetClient$ReconnectThread.run(TcpipNetClient.java:405)0000000000000000022 Console controls java.lang.Thread.getStackTrace(Thread.java:1436) Library.Utils.Tracer.dumpThreads(Tracer.java:454) Library.Utils.Tracer$ThreadDumpOption.action(Tracer.java:497) Library.Utils.ControlOption.execute(ControlOption.java:252) Library.Utils.Controls$ControlsThread.run(Controls.java:424)0000000000000000001 main java.lang.Object.wait(Native Method) java.lang.Object.wait(Object.java:485) Products.QcApp.QcApp.qcAppMain(QcApp.java:262) Products.OrderMgr.OrderMgr.main(OrderMgr.java:47)0000000000000000003 Finalizer java.lang.Object.wait(Native Method) java.lang.ref.Re
ferenceQueue.remove(ReferenceQueue.java:118) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134) java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)0000000000000000018 aframePicks ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod) ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:382) Library.Database.DbTable.updateByKey(DbTable.java:897) Packages.DbTables.Sequences.nextval(Sequences.java:123) Packages.DbTables.ActivityLog.insert(ActivityLog.java:155) LiaOrderMgmt.ActivityLogOperation.operationAction(ActivityLogOperation.java:115) Packages.OrderMgmt.OperationListenerList.execute(OperationListenerList.java:59) Packages.OrderMgmt.PickWorkOrderLineOperations.complete(PickWorkOrderLineOperations.java:709) LiaOrderMgr.CompleteAframePicks.action(CompleteAframePicks.java:83) Products.QcApp.TaskThread.run(TaskThread.java:388)Done
>


Bill Williams Posted on 2010-02-19 16:45:37.0Z
From: "Bill Williams" <billwilliams@qcsoftware.com>
Newsgroups: ianywhere.public.general
References: <4b7e8c52$1@forums-1-dub> <4b7e9d1b$1@forums-1-dub>
Subject: Re: App using iAnywhere JDBC on linux hanging
Lines: 173
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.5843
X-RFC2646: Format=Flowed; Response
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579
NNTP-Posting-Host: vip152.sybase.com
X-Original-NNTP-Posting-Host: vip152.sybase.com
Message-ID: <4b7ec031$1@forums-1-dub>
Date: 19 Feb 2010 08:45:37 -0800
X-Trace: forums-1-dub 1266597937 10.22.241.152 (19 Feb 2010 08:45:37 -0800)
X-Original-Trace: 19 Feb 2010 08:45:37 -0800, vip152.sybase.com
Path: forums-1-dub!not-for-mail
Xref: forums-1-dub ianywhere.public.general:7901
Article PK: 6930

Yes this does sound correct because all of these connections are in
different threads that are part of the same application. It would also
explain why it works with my 11 and not 10 environments.

Thanks for the info.

"Karim Khamis [Sybase iAnywhere]" <kkhamis@sybase.com> wrote in message
news:4b7e9d1b$1@forums-1-dub...
> Bill,
>
> I have a sneaky suspicion you have run into the problem detailed in QTS
> 609736. In QTS 609736, the application can hang if connection A is holding
> on to table locks while connections B, C, D, ... are waiting for those
> table locks, and connection A subsequently calls
> Connection.createStatement() while still holding on to the table locks.
> Note that all the connection (A,B,C,D,...) have to be from the same JDBC
> application. Does that sound like something your app is likely to do? If
> so, I can tell you that the fix for QTS 609736 went into SA 11.0.1.2360
> and SA 10.0.1.3996. Notice that your SA 11 version of 11.0.1.2376 has the
> fix for QTS 609736 while your SA 10 version of 10.0.1.3974 does not.
>
> Karim
> Bill Williams wrote:
>> We have an application that is running multiple threads to do different
>> things at the same time on the database that hangs using the iAnywhere
>> driver on linux. If we run the app with jConnect 5.5, it does not hang
>> and if we run the app on Windows using iAnywhere it does not hang either;
>> however, there is a difference between versions on linux and windows.
>>
>> The linux kernel is Linux batcave.qc.tzo.com 2.6.29.6-server-2mnb #1 SMP
>> Sun Aug 16 23:47:22 EDT 2009 i686 Intel(R) Xeon(TM) CPU 2.66GHz
>> GNU/Linux.
>>
>> The database itself is running on a windows server 2003 running SA
>> 11.0.1.2376.
>>
>> The version of Sybase being used on linux is SA 10.0.1.3974. We've tried
>> using SA 11.0.1.2376 but are having different problems (could not connect
>> to database, that's a different post altogether).
>>
>> Like I said in my initial statement, when we try to run the app on linux
>> using the iAnywhere JDBC driver, it will hang and it seems to hang trying
>> to prepare statements which does not make sense. At the bottom of this
>> post I will put a thread dump with stack traces for each thread. Each
>> thread has its own connection to the database. One thread will have some
>> locks and suddenly one of the other threads will block (according to
>> Sybase Central) against the connection for the thread that has the locks;
>> however, it's on a prepare statement. The other connections do not show
>> blocked in Sybase Central; however, in the dump below you can see they
>> are also hung at the nativePrepareStatement. If I try to cleanly
>> terminate my program, it starts to exit and then stops because the
>> connections are still trying to do stuff. I then terminate the connection
>> that is blocked according to Sybase Central and then everything frees up
>> and the app cleanly exits.
>>
>> If we switch over to jConnect on the linux computer, the app runs fine.
>>
>> I have ran the app on the windows server running 11.0.1.2376 using the
>> iAnywhere JDBC and it runs fine there as well.
>>
>> Java on linux and windows is 1.6.0_18.
>>
>> Here is the thread/stack dump:
>>
>> Thread 16 is the thread with the locks and should be processing through a
>> loop and it stops along with everything else. The connection with thread
>> 18 is the one that actually show blocked in Sybase Central. As you can
>> see, there are multiple threads all sitting at the
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement method.
>>
>> This dump was created about 30 seconds after the program hung so this
>> dump is not what I happened to hit as it ran. I would get the same
>> results over and over again if I kept dumping this data.
>>
>> Dumping thread data...
>> Thread Thread
>> Id Name
>> ------------------- --------------------
>> 0000000000000000002 Reference Handler
>> java.lang.Object.wait(Native Method)
>> java.lang.Object.wait(Object.java:485)
>> java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
>> 0000000000000000016 generateReplens
>> ianywhere.ml.jdbcodbc.jdbc3.IIResultSet.next(Native Method)
>> ianywhere.ml.jdbcodbc.jdbc3.IResultSet.next(IResultSet.java:458)
>>
>> LiaOrderMgr.GenerateReplenishments.action(GenerateReplenishments.java:160)
>> Products.QcApp.TaskThread.run(TaskThread.java:388)
>> 0000000000000000019 releaseMus
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(Native
>> Method)
>>
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:393)
>> Library.Database.DbTable.get(DbTable.java:346)
>> Library.Database.DbTable.get(DbTable.java:372)
>> Library.Database.DbTable.get(DbTable.java:429)
>> LiaOrderMgr.ReleaseHeldMus.action(ReleaseHeldMus.java:81)
>> Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000017
>> ageReplens
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod)
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:393)
>> Library.Database.DbSql.prepareStatement(DbSql.java:509)
>> Library.Database.DbSql.loadParams(DbSql.java:407)
>> Library.Database.DbSql.executeUpdate(DbSql.java:200)
>> LiaOrderMgr.AgeReplenishments.action(AgeReplenishments.java:109)
>> Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000020
>> fileNotifications
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod)
>> ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:382)
>> L
> ibrary.Database.DbTable.getSingleRow(DbTable.java:595)
> Library.Database.DbTable.getSingleRow(DbTable.java:554)
> LiaOrderMgr.OrderFileNotifications.action(OrderFileNotifications.java:56)
> Products.QcApp.TaskThread.run(TaskThread.java:388)0000000000000000023
> rfMgr read daemon java.net.SocketInputStream.socketRead0(Native Method)
> java.net.SocketInputStream.read(SocketInputStream.java:129)
> Library.QcSockets.QcSocket$Input.read(QcSocket.java:711)
> Library.QcSockets.QcSocket.read(QcSocket.java:540)
> Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79)
> Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000008
> Tracer Monitor java.util.ArrayList.size(ArrayList.java:177)
> java.util.AbstractList$Itr.hasNext(AbstractList.java:339)
> Library.Utils.TracerMsgWriter$MonitorThread.run(TracerMsgWriter.java:640)0000000000000000012
> tcpipPortCtrl read daemon java.net.SocketInputStream.socketRead0(Native
> Method) java.net.SocketInputStream.read(SocketInputSt
> ream.java:129) Library.QcSockets.QcSocket$Input.read(QcSocket.java:711)
> Library.QcSockets.QcSocket.read(QcSocket.java:540)
> Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79)
> Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000004
> Signal Dispatcher0000000000000000013 tcpipMsgHub read daemon
> java.net.SocketInputStream.socketRead0(Native Method)
> java.net.SocketInputStream.read(SocketInputStream.java:129)
> Library.QcSockets.QcSocket$Input.read(QcSocket.java:711)
> Library.QcSockets.QcSocket.read(QcSocket.java:540)
> Library.QcSockets.TcpipNet.TcpipNetSocket.readMsg(TcpipNetSocket.java:79)
> Library.QcSockets.QcSocket$ClientThread.run(QcSocket.java:882)0000000000000000015
> Pool Monitor java.lang.Object.wait(Native Method)
> Library.Database.DbConnectionPoolManager$PoolMonitor.run(DbConnectionPoolManager.java:521)0000000000000000021
> QcServerSocket Listener java.net.PlainSocketImpl.socketAccept(Native
> Method) java.net.PlainSocketImpl.accept
> (PlainSocketImpl.java:390)
> java.net.ServerSocket.implAccept(ServerSocket.java:453)
> Library.QcSockets.QcServerSocket.access$000(QcServerSocket.java:38)
> Library.QcSockets.QcServerSocket$ListenerThread.run(QcServerSocket.java:142)0000000000000000011
> Reconnect Monitor java.lang.Object.wait(Native Method)
> Library.QcSockets.TcpipNet.TcpipNetClient$ReconnectThread.run(TcpipNetClient.java:405)0000000000000000022
> Console controls java.lang.Thread.getStackTrace(Thread.java:1436)
> Library.Utils.Tracer.dumpThreads(Tracer.java:454)
> Library.Utils.Tracer$ThreadDumpOption.action(Tracer.java:497)
> Library.Utils.ControlOption.execute(ControlOption.java:252)
> Library.Utils.Controls$ControlsThread.run(Controls.java:424)0000000000000000001
> main java.lang.Object.wait(Native Method)
> java.lang.Object.wait(Object.java:485)
> Products.QcApp.QcApp.qcAppMain(QcApp.java:262)
> Products.OrderMgr.OrderMgr.main(OrderMgr.java:47)0000000000000000003
> Finalizer java.lang.Object.wait(Native Method) java.lang.ref.Re
> ferenceQueue.remove(ReferenceQueue.java:118)
> java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
> java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)0000000000000000018
> aframePicks
> ianywhere.ml.jdbcodbc.jdbc3.IConnection.nativePrepareStatement(NativeMethod)
> ianywhere.ml.jdbcodbc.jdbc3.IConnection.prepareStatement(IConnection.java:382)
> Library.Database.DbTable.updateByKey(DbTable.java:897)
> Packages.DbTables.Sequences.nextval(Sequences.java:123)
> Packages.DbTables.ActivityLog.insert(ActivityLog.java:155)
> LiaOrderMgmt.ActivityLogOperation.operationAction(ActivityLogOperation.java:115)
> Packages.OrderMgmt.OperationListenerList.execute(OperationListenerList.java:59)
> Packages.OrderMgmt.PickWorkOrderLineOperations.complete(PickWorkOrderLineOperations.java:709)
> LiaOrderMgr.CompleteAframePicks.action(CompleteAframePicks.java:83)
> Products.QcApp.TaskThread.run(TaskThread.java:388)Done
>>