wrong log error message when admin user goes into the Search tool admin UI on a search client server
GENERAL
TESTING
GENERAL
TESTING
Description
UMich implements search tool in a client-server mode. We have one dedicated server for search, and all other 7 servers are search clients.
If an admin user logs into those search-client servers, goes into the search tool, and click on the Admin link, a log like the following will be generated:
2012-07-25 14:20:15,860 [TP-Processor17] ERROR org.sakaiproject.search.index.impl.ClusterFSIndexStorage - There has been a major poblem with the Search Index which has become corrupted java.io.IOException: No Index available to open at org.sakaiproject.search.index.impl.ClusterFSIndexStorage.getIndexReader(ClusterFSIndexStorage.java:203) at org.sakaiproject.search.index.impl.ClusterFSIndexStorage.getIndexSearcher(ClusterFSIndexStorage.java:280) at org.sakaiproject.search.index.impl.BaseIndexStorage.getIndexSearcher(BaseIndexStorage.java:107) at org.sakaiproject.search.index.impl.SearchIndexStorage.getIndexSearcher(SearchIndexStorage.java:287) at org.sakaiproject.search.component.service.impl.BaseSearchServiceImpl.getIndexSearcher(BaseSearchServiceImpl.java:501) at org.sakaiproject.search.component.service.impl.BaseSearchServiceImpl.getNDocs(BaseSearchServiceImpl.java:515) at org.sakaiproject.search.component.service.impl.SearchServiceImpl.getSearchStatus(SearchServiceImpl.java:125) at org.sakaiproject.search.tool.SearchAdminBeanImpl.getWorkerThreads(SearchAdminBeanImpl.java:640) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExecutor.java:142) at org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:533) at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:198) at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262) at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507) at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:282) at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336) at org.apache.velocity.Template.merge(Template.java:328) at org.apache.velocity.Template.merge(Template.java:235) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:381) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:345) at org.sakaiproject.search.tool.ControllerServlet2.execute(ControllerServlet2.java:305) at org.sakaiproject.search.tool.ControllerServlet2.doGet(ControllerServlet2.java:152) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
However, the message is not correct. ClusterFSIndexStorage is the default impl for IndexStorage, however, we are using the FSIndexStorage instead. The override is done thorough properties file, but only on search server:
While there is no such overrides on search-client servers, this explains why the default value (ClusterFSIndexStorage) is shown in the error.
But the point is, there is no need or it is incorrect for the admin user to go to the Admin UI of search tool on a non-search-server. The link should be hidden for those servers.
In fact, if the admin user tries to do reindex or refresh of the index files, it could cause a non-forseeable consequences on the server.
UMich implements search tool in a client-server mode. We have one dedicated server for search, and all other 7 servers are search clients.
If an admin user logs into those search-client servers, goes into the search tool, and click on the Admin link, a log like the following will be generated:
2012-07-25 14:20:15,860 [TP-Processor17] ERROR org.sakaiproject.search.index.impl.ClusterFSIndexStorage - There has been a major poblem with the Search Index which has become corrupted
java.io.IOException: No Index available to open
at org.sakaiproject.search.index.impl.ClusterFSIndexStorage.getIndexReader(ClusterFSIndexStorage.java:203)
at org.sakaiproject.search.index.impl.ClusterFSIndexStorage.getIndexSearcher(ClusterFSIndexStorage.java:280)
at org.sakaiproject.search.index.impl.BaseIndexStorage.getIndexSearcher(BaseIndexStorage.java:107)
at org.sakaiproject.search.index.impl.SearchIndexStorage.getIndexSearcher(SearchIndexStorage.java:287)
at org.sakaiproject.search.component.service.impl.BaseSearchServiceImpl.getIndexSearcher(BaseSearchServiceImpl.java:501)
at org.sakaiproject.search.component.service.impl.BaseSearchServiceImpl.getNDocs(BaseSearchServiceImpl.java:515)
at org.sakaiproject.search.component.service.impl.SearchServiceImpl.getSearchStatus(SearchServiceImpl.java:125)
at org.sakaiproject.search.tool.SearchAdminBeanImpl.getWorkerThreads(SearchAdminBeanImpl.java:640)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.velocity.runtime.parser.node.PropertyExecutor.execute(PropertyExecutor.java:142)
at org.apache.velocity.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:533)
at org.apache.velocity.runtime.parser.node.ASTIdentifier.execute(ASTIdentifier.java:198)
at org.apache.velocity.runtime.parser.node.ASTReference.execute(ASTReference.java:262)
at org.apache.velocity.runtime.parser.node.ASTReference.value(ASTReference.java:507)
at org.apache.velocity.runtime.directive.Foreach.render(Foreach.java:282)
at org.apache.velocity.runtime.parser.node.ASTDirective.render(ASTDirective.java:175)
at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:336)
at org.apache.velocity.Template.merge(Template.java:328)
at org.apache.velocity.Template.merge(Template.java:235)
at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:381)
at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:345)
at org.sakaiproject.search.tool.ControllerServlet2.execute(ControllerServlet2.java:305)
at org.sakaiproject.search.tool.ControllerServlet2.doGet(ControllerServlet2.java:152)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
However, the message is not correct. ClusterFSIndexStorage is the default impl for IndexStorage, however, we are using the FSIndexStorage instead. The override is done thorough properties file, but only on search server:
indexStorageName@org.sakaiproject.search.index.IndexStorage=filesystem
While there is no such overrides on search-client servers, this explains why the default value (ClusterFSIndexStorage) is shown in the error.
But the point is, there is no need or it is incorrect for the admin user to go to the Admin UI of search tool on a non-search-server. The link should be hidden for those servers.
In fact, if the admin user tries to do reindex or refresh of the index files, it could cause a non-forseeable consequences on the server.