Jason Gerlowski created SOLR-11638:
--------------------------------------

             Summary: CloudSolrClientTest periodic failures
                 Key: SOLR-11638
                 URL: https://issues.apache.org/jira/browse/SOLR-11638
             Project: Solr
          Issue Type: Bug
      Security Level: Public (Default Security Level. Issues are Public)
          Components: SolrJ, Tests
    Affects Versions: master (8.0)
            Reporter: Jason Gerlowski


The test-randomization recently-added as a part of SOLR-11507 has caused 
{{CloudSolrClientTest.testRetryUpdatesWhenClusterStateIsStale}} to fail 
semi-regularly on master.  The test only succeeds for me on 3 out of 10 test 
runs.  The test fails with the message:

{code}
   [junit4]   2> 14848 ERROR 
(TEST-CloudSolrClientTest.testRetryUpdatesWhenClusterStateIsStale-seed#[64E89FBB977E15AA])
 [    ] o.a.s.c.s.i.CloudSolrClient Request to collection 
[stale_state_test_col] failed due to (404) 
org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error 
from server at 
http://127.0.0.1:38925/solr/stale_state_test_col_shard1_replica_n1: Expected 
mime type application/octet-stream but got text/html. <html>
   [junit4]   2> <head>
   [junit4]   2> <meta http-equiv="Content-Type" 
content="text/html;charset=ISO-8859-1"/>
   [junit4]   2> <title>Error 404 </title>
   [junit4]   2> </head>
   [junit4]   2> <body>
   [junit4]   2> <h2>HTTP ERROR: 404</h2>
   [junit4]   2> <p>Problem accessing 
/solr/stale_state_test_col_shard1_replica_n1/update. Reason:
   [junit4]   2> <pre>    Can not find: 
/solr/stale_state_test_col_shard1_replica_n1/update</pre></p>
   [junit4]   2> <hr /><a href="http://eclipse.org/jetty";>Powered by Jetty:// 
9.3.20.v20170531</a><hr/>
   [junit4]   2> </body>
   [junit4]   2> </html>
   [junit4]   2> , retry? 0
   [junit4]   2> 14851 INFO  
(TEST-CloudSolrClientTest.testRetryUpdatesWhenClusterStateIsStale-seed#[64E89FBB977E15AA])
 [    ] o.a.s.SolrTestCaseJ4 ###Ending testRetryUpdatesWhenClusterStateIsStale
   [junit4]   2> NOTE: reproduce with: ant test  -Dtestcase=CloudSolrClientTest 
-Dtests.method=testRetryUpdatesWhenClusterStateIsStale 
-Dtests.seed=64E89FBB977E15AA -Dtests.slow=true -Dtests.locale=es-VE 
-Dtests.timezone=Indian/Chagos -Dtests.asserts=true 
-Dtests.file.encoding=US-ASCII
   [junit4] ERROR   5.86s | 
CloudSolrClientTest.testRetryUpdatesWhenClusterStateIsStale <<<
   [junit4]    > Throwable #1: 
org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error 
from server at 
http://127.0.0.1:38925/solr/stale_state_test_col_shard1_replica_n1: Expected 
mime type application/octet-stream but got text/html. <html>
   [junit4]    > <head>
   [junit4]    > <meta http-equiv="Content-Type" 
content="text/html;charset=ISO-8859-1"/>
   [junit4]    > <title>Error 404 </title>
   [junit4]    > </head>
   [junit4]    > <body>
   [junit4]    > <h2>HTTP ERROR: 404</h2>
   [junit4]    > <p>Problem accessing 
/solr/stale_state_test_col_shard1_replica_n1/update. Reason:
   [junit4]    > <pre>    Can not find: 
/solr/stale_state_test_col_shard1_replica_n1/update</pre></p>
   [junit4]    > <hr /><a href="http://eclipse.org/jetty";>Powered by Jetty:// 
9.3.20.v20170531</a><hr/>
   [junit4]    > </body>
   [junit4]    > </html>
   [junit4]    >        at 
__randomizedtesting.SeedInfo.seed([64E89FBB977E15AA:D0D9075374976386]:0)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:607)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:255)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:244)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:483)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:413)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.CloudSolrClient.directUpdate(CloudSolrClient.java:559)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.CloudSolrClient.sendRequest(CloudSolrClient.java:1016)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState(CloudSolrClient.java:883)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.CloudSolrClient.request(CloudSolrClient.java:816)
   [junit4]    >        at 
org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194)
   [junit4]    >        at 
org.apache.solr.client.solrj.request.UpdateRequest.commit(UpdateRequest.java:233)
   [junit4]    >        at 
org.apache.solr.client.solrj.impl.CloudSolrClientTest.testRetryUpdatesWhenClusterStateIsStale(CloudSolrClientTest.java:844)
   [junit4]    >        at java.lang.Thread.run(Thread.java:748)
{code}

After some digging, it looks like the issue is that 
testRetryUpdatesWhenClusterStateIsStale implicitly relies on 
{{directUpdatesToLeadersOnly}}, and {{parallelUpdates}}, which are now 
randomized when using SolrTestCaseJ4's CloudSolrClient creation helpers.

Attached is a patch ensuring that testRetryUpdatesWhenClusterStateIsStale 
insists on those two update-related properties, instead of taking the 
randomized defaults.  Without the patch, this test passes maybe 5 out of twenty 
times. With the patch, it passes consistently (20 out of 20 runs).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to