Author: hossman
Date: Thu Sep 24 20:35:56 2009
New Revision: 818618
URL: http://svn.apache.org/viewvc?rev=818618&view=rev
Log:
SOLR-1292: Add FieldCache introspection to stats.jsp and JMX Monitoring via a
new SolrFieldCacheMBean
Added:
lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
(with props)
Modified:
lucene/solr/trunk/CHANGES.txt
lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
Modified: lucene/solr/trunk/CHANGES.txt
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/CHANGES.txt?rev=818618&r1=818617&r2=818618&view=diff
==============================================================================
--- lucene/solr/trunk/CHANGES.txt (original)
+++ lucene/solr/trunk/CHANGES.txt Thu Sep 24 20:35:56 2009
@@ -325,6 +325,9 @@
speeding up phrase queries containing common words by indexing
n-grams and using them at query time.
(Tom Burton-West, Jason Rutherglen via yonik)
+
+83. SOLR-1292: Add FieldCache introspection to stats.jsp and JMX Monitoring via
+ a new SolrFieldCacheMBean. (hossman)
Optimizations
----------------------
Modified: lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java?rev=818618&r1=818617&r2=818618&view=diff
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/solr/trunk/src/java/org/apache/solr/core/SolrCore.java Thu Sep 24
20:35:56 2009
@@ -35,6 +35,7 @@
import org.apache.solr.request.*;
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.search.QParserPlugin;
+import org.apache.solr.search.SolrFieldCacheMBean;
import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.search.ValueSourceParser;
import org.apache.solr.update.DirectUpdateHandler2;
@@ -527,6 +528,8 @@
infoRegistry = new ConcurrentHashMap<String, SolrInfoMBean>();
}
+ infoRegistry.put("fieldCache", new SolrFieldCacheMBean());
+
this.schema = schema;
this.dataDir = dataDir;
this.solrConfig = config;
Added:
lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
URL:
http://svn.apache.org/viewvc/lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java?rev=818618&view=auto
==============================================================================
--- lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
(added)
+++ lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
Thu Sep 24 20:35:56 2009
@@ -0,0 +1,77 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.search;
+
+import java.net.URL;
+
+import org.apache.solr.common.util.NamedList;
+import org.apache.solr.common.util.SimpleOrderedMap;
+
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrInfoMBean;
+
+import org.apache.lucene.search.FieldCache;
+import org.apache.lucene.search.FieldCache.CacheEntry;
+import org.apache.lucene.util.FieldCacheSanityChecker;
+import org.apache.lucene.util.FieldCacheSanityChecker.Insanity;
+
+/**
+ * A SolrInfoMBean that provides introspection of the Lucene FiledCache, this
is <b>NOT</b> a cache that is manged by Solr.
+ *
+ * @version $Id:$
+ */
+public class SolrFieldCacheMBean implements SolrInfoMBean {
+
+ protected FieldCacheSanityChecker checker = new FieldCacheSanityChecker();
+
+ public String getName() { return this.getClass().getName(); }
+ public String getVersion() { return SolrCore.version; }
+ public String getDescription() {
+ return "Provides introspection of the Lucene FiledCache, "
+ + "this is **NOT** a cache that is manged by Solr.";
+ }
+ public Category getCategory() { return Category.CACHE; }
+ public String getSourceId() {
+ return "$Id:$";
+ }
+ public String getSource() {
+ return "$URL:$";
+ }
+ public URL[] getDocs() {
+ return null;
+ }
+ public NamedList getStatistics() {
+ NamedList stats = new SimpleOrderedMap();
+ CacheEntry[] entries = FieldCache.DEFAULT.getCacheEntries();
+ stats.add("entries_count", entries.length);
+ for (int i = 0; i < entries.length; i++) {
+ CacheEntry e = entries[i];
+ e.estimateSize();
+ stats.add("entry#" + i, e.toString());
+ }
+
+ Insanity[] insanity = checker.checkSanity(entries);
+
+ stats.add("instanity_count", insanity.length);
+ for (int i = 0; i < insanity.length; i++) {
+ stats.add("insanity#" + i, insanity[i].toString());
+ }
+ return stats;
+ }
+
+}
Propchange:
lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
lucene/solr/trunk/src/java/org/apache/solr/search/SolrFieldCacheMBean.java
------------------------------------------------------------------------------
svn:keywords = Date Author Id Revision HeadURL