did you take a look at https://issues.apache.org/jira/browse/SOLR-1293
which already handles this On Sat, Aug 1, 2009 at 2:40 AM, danben<dan...@gmail.com> wrote: > > And, re-examining the URL, this is clearly my fault for improper use of > SolrJ. Please ignore. > > > danben wrote: >> >> Hi, >> >> I'm developing an application that requires a large number of cores, and >> since lazy loading / LRU caching won't be available until 1.5, I decided >> to modify CoreContainer to hold me over. >> >> Another requirement is that multiple Solr instances can access the same >> cores (on NAS, for instance), so the approach I'm using is to maintain a >> local registry / load balancer that assigns "active" cores to different >> machines and, when a machine has exceeded its limit, unload cores in LRU >> order. >> >> The modifications to CoreContainer are as follows: to avoid having to >> issue "create" requests every time we need to load an inactive core, >> getCore will attempt to create/open any core that it doesn't find in the >> cores map, unless name is "" or "admin", in which case it returns null as >> per the original implementation. The create function is overloaded to >> take a core name and creates a CoreDescriptor using some defaults added to >> solr.xml. >> >> Everything works fine until I try to make a core unload request, at which >> point I see the following: >> org.apache.solr.common.SolrException: Not Found >> >> Not Found >> >> request: >> /solr/NewUser0/admin/cores?action=UNLOAD&core=NewUser0&wt=javabin&version=2.2 >> at >> org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:343) >> >> So, my guess is that my modifications are keeping admin cores from being >> created properly. Or maybe I don't know what I'm talking about. I >> stepped through execution with a debugger and watched it bounce around >> SolrDispatchHandler.doFilter() before giving up and forwarding the request >> to the RequestDispatcher, but all I could tell from that was that it >> wanted something it couldn't find. Can anyone shed some light on what my >> mods might be keeping Solr from doing that would cause this problem? >> >> Code pasted below. And don't mind the weird locking, this happens even >> with a single thread. >> >> Thanks, >> Dan >> >> public SolrCore getCore(String name) { >> ReentrantReadWriteLock lock = getCoreLock(name); >> try { >> lock.readLock().lock(); >> SolrCore core = cores.get(name); >> if (core != null) { >> core.open(); // increment the ref count while still >> synchronized >> return core; >> } else if ("".equals(name) || "admin".equals(name)) { >> return null; >> } else { >> try { >> lock.readLock().unlock(); >> lock.writeLock().lock(); >> SolrCore core1 = cores.get(name); >> if (core1 != null) { >> return core1; >> } >> log.info("Autocreating core: '" + name + "'"); >> core = create(name); >> cores.put(name, core); >> core.open(); >> return core; >> } catch (IOException e) { >> log.error("Autocreating core '" + name + "'", e); >> return null; >> } catch (ParserConfigurationException e) { >> log.error("Autocreating core '" + name + "'", e); >> return null; >> } catch (SAXException e) { >> log.error("Autocreating core '" + name + "'", e); >> return null; >> } finally { >> lock.readLock().lock(); >> lock.writeLock().unlock(); >> } >> } >> } finally { >> lock.readLock().unlock(); >> } >> } >> >> public SolrCore create(String coreName) throws IOException, >> ParserConfigurationException, SAXException { >> if (defaultConfigFile == null || defaultSchemaFile == null) { >> throw new RuntimeException("Cannot use autocreate unless both a >> default configuration file and a default schema file are specified"); >> } >> CoreDescriptor dcore = new CoreDescriptor(this, coreName, >> getInstanceDir(coreName)); >> dcore.setConfigName(defaultConfigFile); >> dcore.setSchemaName(defaultSchemaFile); >> return create(dcore); >> } >> >> // Eventually this will be overridden to do some intelligent management of >> a directory hierarchy so we //don't have hundreds of thousands of cores in >> the same directory >> public String getInstanceDir(String coreName) { >> return coreName; >> } >> >> > > -- > View this message in context: > http://www.nabble.com/Problem-After-Modifying-CoreContainer-tp24762199p24763149.html > Sent from the Solr - User mailing list archive at Nabble.com. > > -- ----------------------------------------------------- Noble Paul | Principal Engineer| AOL | http://aol.com