mirror of https://github.com/apache/lucene.git
SOLR-1427: fixed registry MBean issue
git-svn-id: https://svn.apache.org/repos/asf/lucene/solr/trunk@815587 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
2ecb6776ad
commit
98eec6bdfe
|
@ -557,7 +557,9 @@ Bug Fixes
|
|||
(Uri Boness, yonik)
|
||||
|
||||
|
||||
66. SOLR-1381: Fixed improper handling of fields that have only term positions and not term offsets during Highlighting (Thorsten Fischer, gsingers)
|
||||
66. SOLR-1381: Fixed improper handling of fields that have only term positions and not term offsets during Highlighting (Thorsten Fischer, gsingers)
|
||||
|
||||
67. SOLR-1427: Fixed registry.jsp issue with MBeans (gsingers)
|
||||
|
||||
Other Changes
|
||||
----------------------
|
||||
|
|
|
@ -574,6 +574,8 @@ public final class SolrCore implements SolrInfoMBean {
|
|||
// Finally tell anyone who wants to know
|
||||
resourceLoader.inform( resourceLoader );
|
||||
resourceLoader.inform( this );
|
||||
//register any SolrInfoMBeans
|
||||
resourceLoader.inform(infoRegistry);
|
||||
instance = this; // set singleton for backwards compatibility
|
||||
} catch (IOException e) {
|
||||
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
|
||||
|
@ -830,7 +832,11 @@ public final class SolrCore implements SolrInfoMBean {
|
|||
}
|
||||
private <T> void addIfNotPresent(Map<String ,T> registry, String name, Class<? extends T> c){
|
||||
if(!registry.containsKey(name)){
|
||||
registry.put(name, (T) resourceLoader.newInstance(c.getName()));
|
||||
T searchComp = (T) resourceLoader.newInstance(c.getName());
|
||||
registry.put(name, searchComp);
|
||||
if (searchComp instanceof SolrInfoMBean){
|
||||
infoRegistry.put(((SolrInfoMBean)searchComp).getName(), (SolrInfoMBean)searchComp);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ public class SolrResourceLoader implements ResourceLoader
|
|||
private String dataDir;
|
||||
|
||||
private final List<SolrCoreAware> waitingForCore = new ArrayList<SolrCoreAware>();
|
||||
private final List<SolrInfoMBean> infoMBeans = new ArrayList<SolrInfoMBean>();
|
||||
private final List<ResourceLoaderAware> waitingForResources = new ArrayList<ResourceLoaderAware>();
|
||||
private static final Charset UTF_8 = Charset.forName("UTF-8");
|
||||
|
||||
|
@ -345,6 +346,10 @@ public class SolrResourceLoader implements ResourceLoader
|
|||
assertAwareCompatibility( ResourceLoaderAware.class, obj );
|
||||
waitingForResources.add( (ResourceLoaderAware)obj );
|
||||
}
|
||||
if (obj instanceof SolrInfoMBean){
|
||||
//TODO: Assert here?
|
||||
infoMBeans.add((SolrInfoMBean) obj);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -401,6 +406,10 @@ public class SolrResourceLoader implements ResourceLoader
|
|||
assertAwareCompatibility( ResourceLoaderAware.class, obj );
|
||||
waitingForResources.add( (ResourceLoaderAware)obj );
|
||||
}
|
||||
if (obj instanceof SolrInfoMBean){
|
||||
//TODO: Assert here?
|
||||
infoMBeans.add((SolrInfoMBean) obj);
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
@ -427,6 +436,16 @@ public class SolrResourceLoader implements ResourceLoader
|
|||
}
|
||||
waitingForResources.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Register any {@link org.apache.solr.core.SolrInfoMBean}s
|
||||
* @param infoRegistry The Info Registry
|
||||
*/
|
||||
public void inform(Map<String, SolrInfoMBean> infoRegistry) {
|
||||
for (SolrInfoMBean bean : infoMBeans) {
|
||||
infoRegistry.put(bean.getName(), bean);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Determines the solrhome from the environment.
|
||||
* Tries JNDI (java:comp/env/solr/home) then system property (solr.solr.home);
|
||||
|
@ -535,4 +554,5 @@ public class SolrResourceLoader implements ResourceLoader
|
|||
throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
package org.apache.solr.core;
|
||||
|
||||
import org.apache.solr.handler.RequestHandlerBase;
|
||||
import org.apache.solr.handler.component.SpellCheckComponent;
|
||||
import org.apache.solr.handler.component.QueryComponent;
|
||||
import org.apache.solr.request.SolrQueryRequest;
|
||||
import org.apache.solr.request.SolrQueryResponse;
|
||||
import org.apache.solr.request.SolrRequestHandler;
|
||||
|
@ -164,6 +166,24 @@ public class SolrCoreTest extends AbstractSolrTestCase {
|
|||
service.shutdown();
|
||||
assertTrue("Running for too long...", service.awaitTermination(60, TimeUnit.SECONDS));
|
||||
}
|
||||
|
||||
public void testInfoRegistry() throws Exception {
|
||||
//TEst that SolrInfoMBeans are registered, including SearchComponents
|
||||
SolrCore core = h.getCore();
|
||||
|
||||
Map<String, SolrInfoMBean> infoRegistry = core.getInfoRegistry();
|
||||
assertTrue("infoRegistry Size: " + infoRegistry.size() + " is not greater than: " + 0, infoRegistry.size() > 0);
|
||||
//try out some that we know are in the config
|
||||
SolrInfoMBean bean = infoRegistry.get(SpellCheckComponent.class.getName());
|
||||
assertNotNull("bean not registered", bean);
|
||||
//try a default one
|
||||
bean = infoRegistry.get(QueryComponent.class.getName());
|
||||
assertNotNull("bean not registered", bean);
|
||||
//try a Req Handler, which are stored by name, not clas
|
||||
bean = infoRegistry.get("standard");
|
||||
assertNotNull("bean not registered", bean);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -66,6 +66,7 @@
|
|||
[<a href="#cache">Cache</a>]
|
||||
[<a href="#query">Query</a>]
|
||||
[<a href="#update">Update</a>]
|
||||
[<a href="#highlighting">Highlighting</a>]
|
||||
[<a href="#other">Other</a>]
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -248,6 +249,39 @@
|
|||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
<xsl:template match="solr/solr-info/HIGHLIGHTING">
|
||||
<br />
|
||||
<a name="highlighting"><h2>Highlighting</h2></a>
|
||||
<table>
|
||||
<tr>
|
||||
<td align="right">
|
||||
 
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<xsl:apply-templates/>
|
||||
</table>
|
||||
</xsl:template>
|
||||
<xsl:template match="solr/solr-info/HIGHLIGHTING/entry">
|
||||
<xsl:for-each select="*">
|
||||
<tr>
|
||||
<td align="right">
|
||||
<strong><xsl:value-of select="name()"/>: </strong>
|
||||
</td>
|
||||
<td>
|
||||
<tt><xsl:value-of select="."/> </tt>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:for-each>
|
||||
<tr>
|
||||
<td align="right">
|
||||
</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="solr/solr-info/OTHER">
|
||||
<br />
|
||||
|
|
Loading…
Reference in New Issue