-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256


On 8/1/17 3:10 PM, Mark Thomas wrote:
> On 01/08/17 20:00, Christopher Schultz wrote:
>> Mark,
>> 
>> On 8/1/17 2:23 PM, Mark Thomas wrote:
>>> On 01/08/17 16:38, Christopher Schultz wrote:
>>>> Mark,
>>>> 
>>>> On 8/1/17 8:01 AM, Mark Thomas wrote:
>>>>> On 30/07/17 13:39, Lazar Kirchev wrote:
>>>>>> Hello Mark,
>>>>>> 
>>>>>> I tried with several thread dumps, but strange - I do not
>>>>>> see in them blocked/waiting threads. I attach two text
>>>>>> files with thread dumps. In both there can be seen the
>>>>>> main thread in AbstractEndpoint code, but it's RUNNABLE.
>>>>>> I also attach a screenshot from a profiling snapshot
>>>>>> which shows similar stacktraces. I am afraid these
>>>>>> stacktraces do not help much.
>>>> 
>>>>> <snip/>
>>>> 
>>>>>> "main" #1 prio=5 os_prio=0 cpu=1593.75 [reset 1593.75] ms
>>>>>>  elapsed=38.87 [reset 38.87] s allocated=27142056 B
>>>>>> (25.88 MB) [reset 27142056 B (25.88 MB)]
>>>>>> defined_classes=2289 io= file i/o: 8755720/5814 B, net
>>>>>> i/o: 56/50 B, files opened:44, socks opened:14  [reset
>>>>>> file i/o: 8755720/5814 B, net i/o: 56/50 B, files
>>>>>> opened:44, socks opened:14 ] tid=0x00000000028bd800
>>>>>> nid=0x40c0 / 16576 runnable [_thread_blocked
>>>>>> (_at_safepoint), 
>>>>>> stack(0x0000000002920000,0x0000000002a20000)] 
>>>>>> [0x0000000002a1e000] java.lang.Thread.State: RUNNABLE at
>>>>>>  
>>>>>> java.net.NetworkInterface.getAll()[Ljava/net/NetworkInterface;(Na
ti
>>
>>>>>> 
ve
>>>>>> 
>>>>>> 
>>>> 
>>>>>> 
>> Method)
>>>> 
>>>>> They help in so far as they point out whatever is going
>>>>> wrong, is going wrong in native code. They don't help point
>>>>> out where. My best guess is some form of network
>>>>> configuration issue where something isn't quite right and
>>>>> Java is timing out trying to perform some form of network
>>>>> operation.
>>>> 
>>>>> I guess we could consider adding an explicit unlock address
>>>>> to be used when the Connector is listening on :: or 0.0.0.0
>>>>> which would be used in preference to the current
>>>>> auto-detection. I'd prefer to understand why this isn't
>>>>> working though.
>>>> 
>>>> I'm curious as to what's going on, here. Why do we need a 
>>>> specific address to "unlock"? Can't we just unbind the socket
>>>> and be done with it ?
>>>> 
>>>> If you use 0.0.0.0/:: and the "actual" interface bound ends
>>>> up being multiple interfaces, what then? There is no "one
>>>> address" from which we can unbind.
>> 
>>> There is a thread blocked in an infinite wait to accept new 
>>> connections. We need to make a connection to the server socket
>>> to 'unlock' (unblock would be better) that thread. That
>>> connection has to be to a specific IP address. When the
>>> Connector is bound to 0.0.0.0 or :: we need to figure out an
>>> actual address to connect to.
>> 
>> Oh, so this is actually the process that runs when "catalina.sh
>> stop" is run? I was thinking that Tomcat was having trouble
>> shutting-down its own socket. Am I right in that it's the "Tomcat
>> shutdown client" that is timing out?
> 
> It looks like something in the native code that enumerates the
> network interfaces is timing out.
> 
>> The catalina.out log posted makes it look like Tomcat gets the 
>> "shutdown" message and then stalls trying to close its own
>> sockets. Does Tomcat, as part of its own shutdown process, need
>> to make outgoing/loopback connections?
> 
> Yes. To unlock the *acceptor thread(s)*.

(Emphasis mine)

I understand, now. Thanks.

Will a Thread.interrupt() not work?

What about calling socket.close() from the shutdown thread? That
should cause a SocketException to be thrown by accept()[1].

If it's an NIO SocketChannel, then we can close the channel itself and
cause an I/O interrupt.[2]

- -chris

[1] https://stackoverflow.com/a/2983860/276232
[2] https://stackoverflow.com/a/12315392/276232
-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJZgNV/AAoJEBzwKT+lPKRYQe0P/0mEXuYmtDUQkgzIwxRIbSnf
pN4s1UQCd7ZLEd9hprFCKLdke22FJbvT6j4NSyRojcJl/kJsF7cGpVWHCCbMCJEv
YGLw+VwsI8TVs4J0q2g7soGM0oE9yD5IYQRsQWuRvAzt3eiEOQaTiPGEgQ4zQuEi
DxPK4ThYQJ141bvoUkEkFCqdL0O4njYT2z9PVs4bnLiH7ASVSkPUfamnX3bbXVlR
2WJ6gkkf5WDzBR0DGeuP/VrSohi+hcXdUwShmjjCjxVQlu6pRbz9p04vwJI0v1MP
kAF4Qc1JEGtt2yj/EwWsIwuBv/jXHB6UuGTkhIVILPySKFmH0iA9zPCoBMERpKum
oui3h+hQPM+jYJxJ5F3ocrmWarMa+9H60kQRdrkd5Re+gxng+e6hvt4yKu4snQD5
/ourOL+GjeMX72mWcMtgvay0vC8RVFKZIciaPP6CnquMMZyLxlU1WrgCEuZmXLBj
BfN3vOcFubj+oUdgLv08PePSSLTX2LbEmzH+2ZUwfVd7z7yMg//FqSY/sHwWTCkk
+cqmcuxmqM1ya0yof2BSQ4KHpp/AXdzi1tA7B2xGn2mVh6OYftW9fYE6kTUowadB
6EKBqq35GhqEltUle+fmNzqWvZdv8ZAjDomV2bm0lEuBbNspAlYXSvQciCT7mlv4
kO3q1Oer/TOlgO8gCZ/0
=zywb
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to