[ 
https://issues.apache.org/jira/browse/SOLR-13778?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16994611#comment-16994611
 ] 

Dawid Weiss commented on SOLR-13778:
------------------------------------

So, this one was fun. Please read if you like good suspense...

The bug reproduces for me on Windows without any problems on newest JDKs 
(openjdk-11+28, openjdk-13+33). 
 I used an older JDK (11.0.4+11) to dump parallel logs from Linux and Windows. 
Linux passes, Windows doesn't.

Disabling TLS1.3 at JVM level doesn't help (although you can see int the logs 
that TLS13 is no longer used in the communication) - see 
"adoptopenjdk-11.0.4+11-no-tls13" folder in the attached zipped logs.

I see a bunch of odd error messages in the log but I don't know the SSL layer 
well enough to tell what they're actually doing and why. The oddest one to me 
is the perceived assymmetry in inbound/ outbound sockets:
{code:java}
  2> javax.net.ssl|ERROR|6B|closeThreadPool-31-thread-2|2019-12-12 10:49:45.234 
WAT|TransportContext.java:312|Fatal (INTERNAL_ERROR): closing inbound before 
receiving peer's close_notify 
{code}
The stack trace of the recv exception contains so many frames that I decided to 
dump full logs (so that apache's httpclient is included).

"adoptopenjdk-11.0.4+11-full-debug" contain these logs (with full debug from 
javax.net and jetty/ httpclient loggers). The
 problem/ difference starts around this moment:
{code:java}
o.a.h.i.e.MainClientExec Executing request GET 
/solr/admin/collections?action=CLUSTERPROP&name=legacyCloud&val=false&wt=javabin&version=2
{code}
While the linux code receives a close_notify at SSL level and then proceeds to 
write to a broken pipe:
{code:java}
   [junit4]   2> 
javax.net.ssl|WARNING|10|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:44:56.450 WAT|TransportContext.java:245|Warning: failed to send warning 
alert CLOSE_NOTIFY (
   [junit4]   2> "throwable" : {
   [junit4]   2>   java.net.SocketException: Broken pipe (Write failed)
   [junit4]   2>        at 
java.base/java.net.SocketOutputStream.socketWrite0(Native Method)
   [junit4]   2>        at 
java.base/java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110)
{code}
...and httpclient retries:
{code:java}
   [junit4]   2> 
javax.net.ssl|DEBUG|10|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:44:56.450 WAT|SSLSocketImpl.java:636|close inbound of SSLSocket
   [junit4]   2> 
javax.net.ssl|DEBUG|10|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:44:56.450 WAT|SSLSocketImpl.java:473|duplex close of SSLSocket
   [junit4]   2> 
javax.net.ssl|DEBUG|10|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:44:56.450 WAT|SSLSocketImpl.java:1381|close the SSL connection (passive)
   [junit4]   2> ## 7753 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.c.DefaultManagedHttpClientConnection http-outgoing-0: Shutdown 
connection
   [junit4]   2> ## 7753 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.e.MainClientExec Connection discarded
   [junit4]   2> ## 7753 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.c.PoolingHttpClientConnectionManager Connection released: [id: 
0][route: {s}->https://127.0.0.1:36121][state: class 
org.apache.solr.client.solrj.impl.HttpSolrClient][total kept alive: 0; route 
allocated: 0 of 10000; total allocated: 0 of 10000]
   [junit4]   2> ## 7753 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.s.c.s.i.SolrHttpRequestRetryHandler Retry http request 1 out of 1
   [junit4]   2> ## 7753 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.s.c.s.i.SolrHttpRequestRetryHandler Retry, request should be 
idempotent
   [junit4]   2> ## 7753 INFO  
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.e.RetryExec I/O exception 
(org.apache.http.NoHttpResponseException) caught when processing request to 
{s}->https://127.0.0.1:36121: The target server failed to respond
{code}
the Windows counterpart fails on recv (?)...
{code:java}
   [junit4]   2> 
javax.net.ssl|WARNING|11|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:35:49.820 WAT|SSLSocketImpl.java:1289|handling exception (
   [junit4]   2> "throwable" : {
   [junit4]   2>   java.net.SocketException: Software caused connection abort: 
recv failed
   [junit4]   2>        at 
java.base/java.net.SocketInputStream.socketRead0(Native Method)
   [junit4]   2>        at 
java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
{code}
and then fails to retry (!).
{code:java}
   [junit4]   2> ## 18393 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.c.DefaultManagedHttpClientConnection http-outgoing-0: Close 
connection
   [junit4]   2> 
javax.net.ssl|DEBUG|11|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:35:49.825 WAT|SSLSocketImpl.java:670|close outbound of SSLSocket
   [junit4]   2> 
javax.net.ssl|DEBUG|11|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:35:49.825 WAT|SSLSocketImpl.java:636|close inbound of SSLSocket
   [junit4]   2> 
javax.net.ssl|WARNING|11|TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF]|2019-12-12
 12:35:49.825 WAT|TransportContext.java:278|Closed transport, general or 
untracked problem
   [junit4]   2> ## 18394 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.c.DefaultManagedHttpClientConnection http-outgoing-0: Shutdown 
connection
   [junit4]   2> ## 18394 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.e.MainClientExec Connection discarded
   [junit4]   2> ## 18394 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.h.i.c.PoolingHttpClientConnectionManager Connection released: [id: 
0][route: {s}->https://127.0.0.1:56646][state: class 
org.apache.solr.client.solrj.impl.HttpSolrClient][total kept alive: 0; route 
allocated: 0 of 10000; total allocated: 0 of 10000]
   [junit4]   2> ## 18394 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.s.c.s.i.SolrHttpRequestRetryHandler Retry http request 1 out of 1
   [junit4]   2> ## 18394 DEBUG 
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.s.c.s.i.SolrHttpRequestRetryHandler Do not retry, non retriable 
class javax.net.ssl.SSLException
{code}
Look at the last line though: note the exception type:
{code:java}
SolrHttpRequestRetryHandler Do not retry, non retriable class 
javax.net.ssl.SSLException
{code}
I've dumped the whole exception, including suppressions (sorry, it is long but 
so is Ulysses and many people like it):
{code:java}
10810 INFO  
(TEST-LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud-seed#[DEADBEEF])
 [     ] o.a.s.c.s.i.SolrHttpRequestRetryHandler Do not retry, non retriable 
class javax.net.ssl.SSLException
          => javax.net.ssl.SSLException: Software caused connection abort: recv 
failed
        at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:127)
javax.net.ssl.SSLException: Software caused connection abort: recv failed
        at sun.security.ssl.Alert.createSSLException(Alert.java:127) ~[?:?]
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:320) 
~[?:?]
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:263) 
~[?:?]
        at sun.security.ssl.TransportContext.fatal(TransportContext.java:258) 
~[?:?]
        at 
sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1315) ~[?:?]
        at 
sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:839) 
~[?:?]
        at 
org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:282)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
 ~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
 ~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165) 
~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
 ~[httpcore-4.4.10.jar:4.4.10]
        at 
org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272) 
~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) 
~[httpclient-4.5.6.jar:4.5.6]
        at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) 
~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 
~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
 ~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
 ~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
 ~[httpclient-4.5.6.jar:4.5.6]
        at 
org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:564)
 ~[main/:?]
        at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:265)
 ~[main/:?]
        at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:248)
 ~[main/:?]
        at 
org.apache.solr.client.solrj.impl.LBSolrClient.doRequest(LBSolrClient.java:368) 
~[main/:?]
        at 
org.apache.solr.client.solrj.impl.LBSolrClient.request(LBSolrClient.java:296) 
~[main/:?]
        at 
org.apache.solr.client.solrj.impl.BaseCloudSolrClient.sendRequest(BaseCloudSolrClient.java:1143)
 ~[main/:?]
        at 
org.apache.solr.client.solrj.impl.BaseCloudSolrClient.requestWithRetryOnStaleState(BaseCloudSolrClient.java:906)
 ~[main/:?]
        at 
org.apache.solr.client.solrj.impl.BaseCloudSolrClient.request(BaseCloudSolrClient.java:838)
 ~[main/:?]
        at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:207) 
~[main/:?]
        at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:224) 
~[main/:?]
        at 
org.apache.solr.cloud.LegacyCloudClusterPropTest.createAndTest(LegacyCloudClusterPropTest.java:88)
 ~[test/:?]
        at 
org.apache.solr.cloud.LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud(LegacyCloudClusterPropTest.java:80)
 ~[test/:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[?:?]
        at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
        at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1754)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:942)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:978)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:992)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
 ~[main/:?]
        at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
 ~[main/:?]
        at 
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
 ~[main/:?]
        at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
 ~[main/:?]
        at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
 ~[main/:?]
        at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:951)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:836)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:887)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:898)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
 ~[main/:?]
        at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
 ~[main/:?]
        at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
 ~[main/:?]
        at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
 ~[main/:?]
        at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
 ~[main/:?]
        at 
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
 ~[main/:?]
        at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
 ~[randomizedtesting-runner-2.7.5.jar:?]
        at java.lang.Thread.run(Thread.java:834) [?:?]
        Suppressed: java.net.SocketException: Software caused connection abort: 
socket write error
                at java.net.SocketOutputStream.socketWrite0(Native Method) 
~[?:?]
                at 
java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:110) ~[?:?]
                at 
java.net.SocketOutputStream.write(SocketOutputStream.java:150) ~[?:?]
                at 
sun.security.ssl.SSLSocketOutputRecord.encodeAlert(SSLSocketOutputRecord.java:81)
 ~[?:?]
                at 
sun.security.ssl.TransportContext.fatal(TransportContext.java:351) ~[?:?]
                at 
sun.security.ssl.TransportContext.fatal(TransportContext.java:263) ~[?:?]
                at 
sun.security.ssl.TransportContext.fatal(TransportContext.java:258) ~[?:?]
                at 
sun.security.ssl.SSLSocketImpl.handleException(SSLSocketImpl.java:1315) ~[?:?]
                at 
sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:839) 
~[?:?]
                at 
org.apache.http.impl.io.SessionInputBufferImpl.streamRead(SessionInputBufferImpl.java:137)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.impl.io.SessionInputBufferImpl.fillBuffer(SessionInputBufferImpl.java:153)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.impl.io.SessionInputBufferImpl.readLine(SessionInputBufferImpl.java:282)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:138)
 ~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
 ~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165) 
~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
 ~[httpcore-4.4.10.jar:4.4.10]
                at 
org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272) 
~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185) 
~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) 
~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) 
~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
 ~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
 ~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
 ~[httpclient-4.5.6.jar:4.5.6]
                at 
org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:564)
 ~[main/:?]
                at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:265)
 ~[main/:?]
                at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:248)
 ~[main/:?]
                at 
org.apache.solr.client.solrj.impl.LBSolrClient.doRequest(LBSolrClient.java:368) 
~[main/:?]
                at 
org.apache.solr.client.solrj.impl.LBSolrClient.request(LBSolrClient.java:296) 
~[main/:?]
                at 
org.apache.solr.client.solrj.impl.BaseCloudSolrClient.sendRequest(BaseCloudSolrClient.java:1143)
 ~[main/:?]
                at 
org.apache.solr.client.solrj.impl.BaseCloudSolrClient.requestWithRetryOnStaleState(BaseCloudSolrClient.java:906)
 ~[main/:?]
                at 
org.apache.solr.client.solrj.impl.BaseCloudSolrClient.request(BaseCloudSolrClient.java:838)
 ~[main/:?]
                at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:207) 
~[main/:?]
                at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:224) 
~[main/:?]
                at 
org.apache.solr.cloud.LegacyCloudClusterPropTest.createAndTest(LegacyCloudClusterPropTest.java:88)
 ~[test/:?]
                at 
org.apache.solr.cloud.LegacyCloudClusterPropTest.testCreateCollectionSwitchLegacyCloud(LegacyCloudClusterPropTest.java:80)
 ~[test/:?]
                at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 
Method) ~[?:?]
                at 
jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
 ~[?:?]
                at 
jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[?:?]
                at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1754)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:942)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:978)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:992)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
 ~[main/:?]
                at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
 ~[main/:?]
                at 
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
 ~[main/:?]
                at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
 ~[main/:?]
                at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
 ~[main/:?]
                at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:817)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:468)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:951)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:836)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:887)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:898)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.rules.SystemPropertiesRestoreRule$1.evaluate(SystemPropertiesRestoreRule.java:57)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
 ~[main/:?]
                at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
 ~[main/:?]
                at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
 ~[main/:?]
                at 
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
 ~[main/:?]
                at 
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
 ~[main/:?]
                at 
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
 ~[main/:?]
                at 
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at 
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:368)
 ~[randomizedtesting-runner-2.7.5.jar:?]
                at java.lang.Thread.run(Thread.java:834) [?:?]
Caused by: java.net.SocketException: Software caused connection abort: recv 
failed
        at java.net.SocketInputStream.socketRead0(Native Method) ~[?:?]
        at java.net.SocketInputStream.socketRead(SocketInputStream.java:115) 
~[?:?]
        at java.net.SocketInputStream.read(SocketInputStream.java:168) ~[?:?]
        at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
        at 
sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:448) ~[?:?]
        at 
sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(SSLSocketInputRecord.java:68)
 ~[?:?]
        at 
sun.security.ssl.SSLSocketImpl.readApplicationRecord(SSLSocketImpl.java:1104) 
~[?:?]
        at 
sun.security.ssl.SSLSocketImpl$AppInputStream.read(SSLSocketImpl.java:823) 
~[?:?]
        ... 67 more
{code}
It's a weird one – with two suppressed socket exceptions (recv and socket write 
error) and a top SSLException wrapping them both.

Now, the problem we see on the surface is caused by the fact that 
javax.net.ssl.SSLException is *on the list of non-retriable classes* in 
SolrHttpRequestRetryHandler so the code then follows a different path on 
Windows (compared to Linux).

Adding javax.net.ssl.SSLException to retriable exceptions makes the test pass. 
_But I don't know if it's a good fix;_ I don't know who came up with 
"retriable" classes or why they're there in the first place. Neither can I 
explain the difference between the two (seems like a different underlying close 
operation on sockets).

Still, I think that's a decent step forward. Thoughts?

> Windows JDK SSL Test Failure trend: SSLException: Software caused connection 
> abort: recv failed
> -----------------------------------------------------------------------------------------------
>
>                 Key: SOLR-13778
>                 URL: https://issues.apache.org/jira/browse/SOLR-13778
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Chris M. Hostetter
>            Priority: Major
>         Attachments: dumps-LegacyCloud.zip, logs-2019-12-12-1.zip
>
>
> Now that Uwe's jenkins build has been correctly reporting it's build results 
> for my [automated 
> reports|http://fucit.org/solr-jenkins-reports/failure-report.html] to pick 
> up, I've noticed a pattern of failures that indicate a definite problem with 
> using SSL on Windows (even with java 11.0.4
>  )
>  The symptommatic stack traces all contain...
> {noformat}
> ...
>    [junit4]    > Caused by: javax.net.ssl.SSLException: Software caused 
> connection abort: recv failed
>    [junit4]    >        at 
> java.base/sun.security.ssl.Alert.createSSLException(Alert.java:127)
> ...
>    [junit4]    > Caused by: java.net.SocketException: Software caused 
> connection abort: recv failed
>    [junit4]    >        at 
> java.base/java.net.SocketInputStream.socketRead0(Native Method)
> ...
> {noformat}
> I suspect this may be related to 
> [https://bugs.openjdk.java.net/browse/JDK-8209333] but i have no concrete 
> evidence to back this up.
> I'll post some details of my analysis in comments...



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to