A case has been opened on this and we are working directly with Seva to understand the best way to address this issue.
Evan (MSFT)
--------------------
>Thread-Topic: Threads blocking on BaseInputStream initialization
>thread-index: AcjLPaV9JqCqkftZSM+pwqHiKTK9yQ==
>X-WBNR-Posting-Host: 207.46.193.207
>From: =?Utf-8?B?U2V2YQ==?=
>Subject: Threads blocking on BaseInputStream initialization
>Date: Tue, 10 Jun 2008 14:05:00 -0700
>Lines: 33
>Message-ID:
>MIME-Version: 1.0
>Content-Type: text/plain;
> charset="Utf-8"
>Content-Transfer-Encoding: 7bit
>X-Newsreader: Microsoft CDO for Windows 2000
>Content-Class: urn:content-classes:message
>Importance: normal
>Priority: normal
>X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.2992
>Newsgroups: microsoft.public.sqlserver.jdbcdriver
>Path: TK2MSFTNGHUB02.phx.gbl
>Xref: TK2MSFTNGHUB02.phx.gbl microsoft.public.sqlserver.jdbcdriver:525
>NNTP-Posting-Host: tk2msftibfm01.phx.gbl 10.40.244.149
>X-Tomcat-NG: microsoft.public.sqlserver.jdbcdriver
>
>I'm running some queries in multiple (like ~100) threads using plain JDBC and
>MS JDBC driver.
>What I'm observing is that most threads are waiting for
>java.util.logging.Logger class monitor trying to enter
>java.util.logging.Logger.getLogger() static method in
>com.microsoft.sqlserver.jdbc.BaseInputStream constructor. So stack trace
>looks like this for _almost_all_threads:
>
>"MultiDataGridTask-193763-81841" prio=6 tid=0x0000000015f65200 nid=0x1108
>waiting for monitor entry [0x000000002c38e000..0x000000002c38fb60]
> at java.util.logging.Logger.getLogger(Unknown Source)
> - waiting to lock <0x00000000804c9488> (a java.lang.Class)
> at com.microsoft.sqlserver.jdbc.BaseInputStream.(Unknown Source)
> at com.microsoft.sqlserver.jdbc.SimpleInputStream.(Unknown Source)
> at com.microsoft.sqlserver.jdbc.DDC.convertNonUnicodeNonPLPToObject(Unknown
>Source)
> at com.microsoft.sqlserver.jdbc.ServerDTVImpl.getValue(Unknown Source)
> at com.microsoft.sqlserver.jdbc.DTV.getValue(Unknown Source)
> at com.microsoft.sqlserver.jdbc.Column.getValue(Unknown Source)
> at com.microsoft.sqlserver.jdbc.Column.getValue(Unknown Source)
> at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getObject(Unknown Source)
> at our.code.base.RowSet.sendToWriter(RowSet.java:90)
>
>There are two problems about that:
>1) it's probably bad idea to instantiate a logger every time the stream is
>instantiating (let's see if it's fixed in the next release)
>
>2) I don't see a thread that owns (locks) that monitor in the full thread
>dump! Can someone please comment on this - how is this ever possible?
>
>Any hints/ideas on workaround are highly appreciated.
>Regards,
>Seva
>
Evan T. Basalik
This posting is provided “AS IS” with no warranties, and confers no rights.
>> Stay informed about: Threads blocking on BaseInputStream initialization