diff --git a/CHANGES.txt b/CHANGES.txt index 70068be16fd..bf6592ccba7 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -341,7 +341,10 @@ New Features on newSearcher event, if configured in solrconfig.xml (shalin) -68. SOLR-554: Hierarchical JDK log level selector for SOLR Admin replaces logging.jsp (Sean Timm via shalin) +68. SOLR-554: Hierarchical JDK log level selector for SOLR Admin replaces logging.jsp (Sean Timm via shalin) + +69. SOLR-506: Emitting HTTP Cache headers can be enabled or disabled through configuration + on a per-handler basis (shalin) Changes in runtime behavior 1. SOLR-559: use Lucene updateDocument, deleteDocuments methods. This diff --git a/src/java/org/apache/solr/handler/MoreLikeThisHandler.java b/src/java/org/apache/solr/handler/MoreLikeThisHandler.java index 4af654e009d..3b8453dc12a 100644 --- a/src/java/org/apache/solr/handler/MoreLikeThisHandler.java +++ b/src/java/org/apache/solr/handler/MoreLikeThisHandler.java @@ -82,8 +82,7 @@ public class MoreLikeThisHandler extends RequestHandlerBase public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { RequestHandlerUtils.addExperimentalFormatWarning( rsp ); - rsp.setHttpCaching(true); - + SolrParams params = req.getParams(); SolrIndexSearcher searcher = req.getSearcher(); diff --git a/src/java/org/apache/solr/handler/RequestHandlerBase.java b/src/java/org/apache/solr/handler/RequestHandlerBase.java index c73241b31a6..588fa83b441 100644 --- a/src/java/org/apache/solr/handler/RequestHandlerBase.java +++ b/src/java/org/apache/solr/handler/RequestHandlerBase.java @@ -50,6 +50,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo protected SolrParams invariants; volatile long totalTime = 0; long handlerStart = System.currentTimeMillis(); + protected boolean httpCaching = true; /** shorten the class references for utilities */ private static class U extends SolrPluginUtils { @@ -113,6 +114,11 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo invariants = SolrParams.toSolrParams((NamedList)o); } } + + if (initArgs != null) { + Object caching = initArgs.get("httpCaching"); + httpCaching = caching != null ? Boolean.parseBoolean(caching.toString()) : true; + } } public NamedList getInitArgs() { @@ -125,6 +131,7 @@ public abstract class RequestHandlerBase implements SolrRequestHandler, SolrInfo numRequests++; try { U.setDefaults(req,defaults,appends,invariants); + rsp.setHttpCaching(httpCaching); handleRequestBody( req, rsp ); // count timeouts boolean timedOut = (Boolean)rsp.getResponseHeader().get("partialResults") == null ? false : (Boolean)rsp.getResponseHeader().get("partialResults"); diff --git a/src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java b/src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java index 8130a62c84e..b2b85e9cfcc 100644 --- a/src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java +++ b/src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java @@ -263,7 +263,6 @@ public class SpellCheckerRequestHandler extends RequestHandlerBase implements So @Override public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception { - rsp.setHttpCaching(true); SolrParams p = req.getParams(); String words = p.get("q"); String cmd = p.get("cmd"); diff --git a/src/java/org/apache/solr/handler/component/SearchHandler.java b/src/java/org/apache/solr/handler/component/SearchHandler.java index 2742718009f..981cef80356 100644 --- a/src/java/org/apache/solr/handler/component/SearchHandler.java +++ b/src/java/org/apache/solr/handler/component/SearchHandler.java @@ -140,8 +140,6 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware final RTimer timer = rb.isDebug() ? new RTimer() : null; - rsp.setHttpCaching(true); - if (timer == null) { // non-debugging prepare phase for( SearchComponent c : components ) { diff --git a/src/java/org/apache/solr/request/SolrQueryResponse.java b/src/java/org/apache/solr/request/SolrQueryResponse.java index fc8637a22ff..56c59f14ef5 100644 --- a/src/java/org/apache/solr/request/SolrQueryResponse.java +++ b/src/java/org/apache/solr/request/SolrQueryResponse.java @@ -75,7 +75,7 @@ public class SolrQueryResponse { /** * Should this response be tagged with HTTP caching headers? */ - protected boolean httpCaching=false; + protected boolean httpCaching=true; /*** // another way of returning an error diff --git a/src/test/test-files/solr/conf/solrconfig.xml b/src/test/test-files/solr/conf/solrconfig.xml index 4b0b94654a8..8f6a1e3dea0 100644 --- a/src/test/test-files/solr/conf/solrconfig.xml +++ b/src/test/test-files/solr/conf/solrconfig.xml @@ -229,7 +229,9 @@ The "standard" request handler is the default and will be used if qt is not specified in the request. --> - + + true +