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;(Native
>>>
>>>
> 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.

Mark

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

Reply via email to