[ 
https://issues.apache.org/jira/browse/SOLR-9832?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Rowe updated SOLR-9832:
-----------------------------
    Attachment: SOLR-9832.patch

Patch with a new test that fails about 4% of the time on my Jenkins box, and a 
fix.  The new test doesn't involve PreAnalyzedField(Type).

The issue appears to be that a schema modification request will persist the new 
schema to ZooKeeper, then wait up to a configurable amount of time (10 minutes 
by default) for all replicas to get the new schema, and then return success.  A 
ZooKeeper watch on the coordinating core's config directory eventually triggers 
a core reload for the persisted schema changes, but sometimes a request sent to 
a different node will trigger a reload for an older schema.  As a result, after 
returning success for a schema modification, the coordinating node will briefly 
host an *older* schema.

The attached patch triggers an immediate core reload after schema changes are 
successfully persisted to ZooKeeper, and once that's finished, checks that 
other replicas have the new schema.  The patch also: forces a schema staleness 
check & update when the ZK watch is created for the new core's schema in 
{{ManagedIndexSchemaFactory.inform()}}; and removes an unnecessary schema 
download just prior to reloading the core in the listener created in 
{{SolrCore.getConfListener()}}.

I beasted the new test for 500 iterations with the patch, and it did not fail.  
I also beasted {{PreAnalyzedFieldManagedSchemaCloudTest.testAdd2Fields()}} for 
300 iterations with the patch, and it did not fail.

Precommit and all Solr tests pass with the patch; I think it's ready.

I'll commit to master and let it soak for a couple days.

> Schema modifications are not immediately visible on the coordinating node
> -------------------------------------------------------------------------
>
>                 Key: SOLR-9832
>                 URL: https://issues.apache.org/jira/browse/SOLR-9832
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Steve Rowe
>         Attachments: SOLR-9832.patch
>
>
> As noted on SOLR-9751, 
> {{PreAnalyzedFieldManagedSchemaCloudTest.testAdd2Fields()}} has been failing 
> on Jenkins.  When I beast this test on my Jenkins box, it fails about 1% of 
> the time.  E.g. from 
> [https://jenkins.thetaphi.de/job/Lucene-Solr-6.x-Linux/2247/]:
> {noformat}
>   [junit4]   2> NOTE: reproduce with: ant test  
> -Dtestcase=PreAnalyzedFieldManagedSchemaCloudTest 
> -Dtests.method=testAdd2Fields -Dtests.seed=CD72F125201C0C76 
> -Dtests.multiplier=3 -Dtests.slow=true -Dtests.locale=is 
> -Dtests.timezone=Antarctica/McMurdo -Dtests.asserts=true 
> -Dtests.file.encoding=US-ASCII
>   [junit4] ERROR   0.09s J0 | 
> PreAnalyzedFieldManagedSchemaCloudTest.testAdd2Fields <<<
>   [junit4]    > Throwable #1: 
> org.apache.solr.client.solrj.SolrServerException: No live SolrServers 
> available to handle this 
> request:[https://127.0.0.1:39011/solr/managed-preanalyzed, 
> https://127.0.0.1:33343/solr/managed-preanalyzed]
>   [junit4]    >       at 
> __randomizedtesting.SeedInfo.seed([CD72F125201C0C76:656743CEFC1A9F80]:0)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:414)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.CloudSolrClient.sendRequest(CloudSolrClient.java:1292)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.CloudSolrClient.requestWithRetryOnStaleState(CloudSolrClient.java:1062)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.CloudSolrClient.request(CloudSolrClient.java:1004)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:149)
>   [junit4]    >       at 
> org.apache.solr.schema.PreAnalyzedFieldManagedSchemaCloudTest.addField(PreAnalyzedFieldManagedSchemaCloudTest.java:61)
>   [junit4]    >       at 
> org.apache.solr.schema.PreAnalyzedFieldManagedSchemaCloudTest.testAdd2Fields(PreAnalyzedFieldManagedSchemaCloudTest.java:52)
>   [junit4]    >       at java.lang.Thread.run(Thread.java:745)
>   [junit4]    > Caused by: 
> org.apache.solr.client.solrj.impl.HttpSolrClient$RemoteSolrException: Error 
> from server at https://127.0.0.1:39011/solr/managed-preanalyzed: No such path 
> /schema/fields/field2
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSolrClient.java:593)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:262)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:251)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.doRequest(LBHttpSolrClient.java:435)
>   [junit4]    >       at 
> org.apache.solr.client.solrj.impl.LBHttpSolrClient.request(LBHttpSolrClient.java:387)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

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

Reply via email to