OK, stand back.  I opened up JVisualVM.  I connected it to the H2 server 
that I had previously started with the following command line:

java -cp ~/.m2/repository/com/h2database/h2/1.3.160/h2-1.3.160.jar 
org.h2.tools.Server -tcp 

Then I ran a one-liner Java program that has the following call in it:

TcpServer.shutdown(String.format("tcp://%s:9092", 
java.net.InetAddress.getLocalHost().getHostAddress()), null, true, false);

This program ran and exited normally.  If it matters, I ran it as a JUnit 
test, but I can't see how that would make a difference.

Then from the *Threads* tab in JVisualVM I pressed the *Thread Dump* button 
and the results are below.  Thanks for looking into this.

Best,
Laird

2011-10-28 16:24:56
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.1-b02-384 mixed 
mode):

"RMI TCP Connection(3)-192.168.5.248" daemon prio=9 tid=10b92b800 
nid=0x10d816000 runnable [10d815000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    - locked <7f40a2040> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:66)
    at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517)
    at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - <7f46a8650> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"JMX server connection timeout 22" daemon prio=9 tid=101801000 
nid=0x10d713000 in Object.wait() [10d712000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f44e27c0> (a [I)
    at 
com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:150)
    - locked <7f44e27c0> (a [I)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - None

"RMI Scheduler(0)" daemon prio=9 tid=106813000 nid=0x10d610000 waiting on 
condition [10d60f000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <7f44e2808> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
    at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
    at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
    at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)
    at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)
    at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - None

"RMI TCP Connection(1)-192.168.5.248" daemon prio=9 tid=10681f800 
nid=0x10d50d000 runnable [10d50c000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    - locked <7f45e3148> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:66)
    at 
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517)
    at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
    at 
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - <7f4540150> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"RMI TCP Accept-0" daemon prio=9 tid=107374800 nid=0x10d40a000 runnable 
[10d409000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    - locked <7f44e4b40> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at 
sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
    at 
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
    at 
sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - None

"Poller SunPKCS11-Darwin" daemon prio=1 tid=10b92c800 nid=0x10d307000 
waiting on condition [10d306000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
    at java.lang.Thread.sleep(Native Method)
    at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - None

"Attach Listener" daemon prio=9 tid=10b92b000 nid=0x10d204000 waiting on 
condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"DestroyJavaVM" prio=5 tid=1068cb000 nid=0x100501000 waiting on condition 
[00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"H2 TCP Server (tcp://192.168.5.248:9092)" prio=5 tid=107367800 
nid=0x10d101000 runnable [10d100000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
    - locked <7f44e4bb8> (a java.net.SocksSocketImpl)
    at java.net.ServerSocket.implAccept(ServerSocket.java:462)
    at java.net.ServerSocket.accept(ServerSocket.java:430)
    at org.h2.server.TcpServer.listen(TcpServer.java:239)
    at org.h2.tools.Server.run(Server.java:451)
    at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
    - None

"Low Memory Detector" daemon prio=5 tid=1070d7800 nid=0x10c60d000 runnable 
[00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread1" daemon prio=9 tid=1070d6800 nid=0x10c50a000 waiting on 
condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread0" daemon prio=9 tid=1070d6000 nid=0x10c407000 waiting on 
condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" daemon prio=9 tid=1070d5000 nid=0x10c304000 runnable 
[00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Surrogate Locker Thread (Concurrent GC)" daemon prio=5 tid=1070d4800 
nid=0x10c201000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Finalizer" daemon prio=8 tid=1070cf800 nid=0x10abf8000 in Object.wait() 
[10abf7000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f44e5308> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
    - locked <7f44e5308> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

   Locked ownable synchronizers:
    - None

"Reference Handler" daemon prio=10 tid=1070cf000 nid=0x10aaf5000 in 
Object.wait() [10aaf4000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <7f44e3908> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:485)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
    - locked <7f44e3908> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

"VM Thread" prio=9 tid=1070ca000 nid=0x10a9f2000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=106800000 nid=0x102501000 
runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=107000000 nid=0x102604000 
runnable 

"Gang worker#2 (Parallel GC Threads)" prio=9 tid=107001000 nid=0x102707000 
runnable 

"Gang worker#3 (Parallel GC Threads)" prio=9 tid=107001800 nid=0x106102000 
runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10707c800 nid=0x10a501000 
runnable 
"VM Periodic Task Thread" prio=10 tid=1070e9000 nid=0x10c710000 waiting on 
condition 

"Exception Catcher Thread" prio=10 tid=101802000 nid=0x1017f9000 runnable 
JNI global references: 1282


-- 
You received this message because you are subscribed to the Google Groups "H2 
Database" group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/h2-database/-/zn9qyNwjAcIJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/h2-database?hl=en.

Reply via email to