IndexFetcher: skip opening a searcher when the CoreContainer is shutting down A polling fetch that finishes just as the node shuts down calls CoreContainer.getCore(), taking a fresh reference to a core the container is already tearing down. The container's own close then can't complete, and the last decref lands on the indexFetcher thread — so that thread ends up running the whole SolrCore.doClose(). If IndexWriter.close() fails there (the fetch has just swapped index directories out from under it), directory refcounts are left dangling and CachingDirectoryFactory.close() blocks for its full 12s wait before giving up on them. Checking CoreContainer.isShutDown() first avoids taking the reference at all; opening a searcher at that point would fail anyway. This narrows the window rather than closing it — shutdown can still begin right after the check — but it covers the common case, since CoreContainer.shutdown() sets the flag before it starts closing cores. Found while investigating an intermittent TestUserManagedReplicationWithAuth failure, where the aborted doClose() never reached its ObjectReleaseTracker release and 49 objects were reported leaked.
Solr is the blazing-fast, open source, multi-modal search platform built on Apache Lucene. It powers full-text, vector, and geospatial search at many of the world's largest organizations.
For a complete description of the Solr project, team composition, source code repositories, and other details, please see the Solr web site at https://solr.apache.org/
Downloads for Apache Solr distributions are available at https://solr.apache.org/downloads.html.
The Reference Guide contains an entire Deployment Guide to walk you through installing Solr.
You can run Solr in Docker via the official image. Learn more about Solr in Docker
Solr has official support for running on Kubernetes, in the official Docker image. Please refer to the Solr Operator home for details, tutorials and instructions.
Solr includes a few examples to help you get started. To run a specific example, enter:
bin/solr start -e <EXAMPLE> where <EXAMPLE> is one of:
cloud: SolrCloud example
techproducts: Comprehensive example illustrating many of Solr's core capabilities
schemaless: Schema-less example (schema is inferred from data during indexing)
films: Example of starting with _default configset and adding explicit fields dynamically
For instance, if you want to run the techproducts example, enter:
bin/solr start -e techproducts
For a more in-depth introduction, please check out the tutorials in the Solr Reference Guide.
#solr on libera.chatLearn more about developing Solr by reading through the developer docs in ./dev-docs source tree or building Solr from source in ./dev-docs/solr-source-code.adoc
Solr uses Gradle for its build system. Here are some useful hints to build and run Solr locally:
./gradlew dev
cd ./solr/packaging/build/dev bin/solr start
bin/solr script to create and manage Solr collections. For example use the bin/solr post tool to index some sample data.Please review CONTRIBUTING.md for information on contributing to the project.
To get involved in the developer community:
#solr-dev in the the-asf organization. Sign up at https://the-asf.slack.com/messages/CE70MDPMF#solr-dev on libera.chat