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

Andrzej Bialecki  commented on SOLR-10054:
------------------------------------------

Yeah, we definitely need more test coverage of such fundamental 
functionality... :(

The issue turned out to be less trivial than I thought. When rename or swap 
core is requested the metrics subsystem needs to preserve metrics that are 
already accumulated under the old core name (we use separate registries per 
core). Since metrics' initialization occurs when core is constructed we can't 
easily re-register all {{SolrMetricProducer}}-s in the new registry, so the 
existing code tried to move actual {{Metric}} instances from the old to the new 
repository. The problem was that more or less the same metric names already 
existed in the target repository, because they were registered there by the 
other core's producers - and vice versa.

The solution was to implement a dedicated operation 
{{SolrMetricManager.swap(name1, name2)}} that knows how to atomically (or 
rather under proper locking) swap these two registries, without moving metric 
instances between registries.

I also added {{TestCoreAdmin.testCoreSwap}} and {{testValidCoreRename}}, and 
extended {{CoreAdminRequest}} to support the swap operation.

> Core swapping doesn't work with new metrics changes in place
> ------------------------------------------------------------
>
>                 Key: SOLR-10054
>                 URL: https://issues.apache.org/jira/browse/SOLR-10054
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>    Affects Versions: master (7.0), 6.4.0
>            Reporter: Shawn Heisey
>            Assignee: Andrzej Bialecki 
>         Attachments: solr64coreswap1.png, solr64coreswap2.png, 
> solr64coreswap3.png
>
>
> The new 6.4.0 version includes some significant changes having to do with 
> metrics.  These changes have broken core swapping.  Will attach some 
> screenshots.
> For the screenshots that I will attach, I started Solr directly from the 
> 6.4.0 download on Windows 7 (bin\solr start).  Then I created a "foo" core 
> and a "bar" core, each from a different configset, using the bin\solr command.
>  * Screenshot 1: you can see the two cores in CoreAdmin.
>  * Screenshot 2: Attempting to swap the cores, an error message appears about 
> a metric already existing for the ping handler.
>  * Screenshot 3: Clicking somewhere else and then back to CoreAdmin shows 
> that both cores have the same name -- bar.
>  * If Solr is stopped and then started back up, the admin UI looks like 
> screenshot 1 again -- the change that caused two cores with the same name 
> only took place within the running Solr and did not update core.properties 
> files.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

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

Reply via email to