Solr
  1. Solr
  2. SOLR-506

Enabling HTTP Cache headers should be configurable on a per-handler basis

    Details

    • Type: Improvement Improvement
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 1.3
    • Fix Version/s: 1.3
    • Component/s: None
    • Labels:
      None

      Description

      HTTP cache headers are needed only for select handler's response and it does not make much sense to enable it globally for all Solr responses.

      Therefore, enabling/disabling cache headers should be configurable on a per-handler basis. It should be enabled by default on the select request handler and disabled by default on all others. It should be possible to override these defaults through configuration as well as through API.

      1. SOLR-506.patch
        5 kB
        Shalin Shekhar Mangar
      2. SOLR-506.patch
        5 kB
        Shalin Shekhar Mangar
      3. SOLR-506.patch
        6 kB
        Shalin Shekhar Mangar

        Issue Links

          Activity

          Hide
          Hoss Man added a comment -

          Assuming some form of SOLR-505 is committed the most straightforward way to make caching configurable per handler instance is probably to add an optional init param to RequestHandlerBase

          Show
          Hoss Man added a comment - Assuming some form of SOLR-505 is committed the most straightforward way to make caching configurable per handler instance is probably to add an optional init param to RequestHandlerBase
          Hide
          Shalin Shekhar Mangar added a comment -

          Why didn't I think of that?

          Yes, I agree, that should be the most painless way of implementing this.

          Show
          Shalin Shekhar Mangar added a comment - Why didn't I think of that? Yes, I agree, that should be the most painless way of implementing this.
          Hide
          Shalin Shekhar Mangar added a comment -

          An optional boolean init parameter "httpCaching" has been added to RequestHandlerBase. This parameter should be set to true if emitting cache headers is desired. By default, emitting http cache headers is disabled. Users who desire caching must enable this for the handler they want.

          The example solrconfig.xml has emitting http caching enabled for the StandardRequestHandler, MoreLikeThisHandler and SpellCheckerRequestHandler. I've removed explicit setHttpCaching calls in SearchHandler, MoreLikeThisHandler and SpellCheckerRequestHandler. If a custom request handler explictly calls the SolrQueryResponse#setHttpCaching method then it will override the per-handler configuration in solrconfig.xml

          Do we need tests for this?

          svn stat follows:
          M src/test/test-files/solr/conf/solrconfig-nocache.xml
          M src/test/test-files/solr/conf/solrconfig.xml
          M src/java/org/apache/solr/handler/RequestHandlerBase.java
          M src/java/org/apache/solr/handler/component/SearchHandler.java
          M src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java
          M src/java/org/apache/solr/handler/MoreLikeThisHandler.java
          M example/solr/conf/solrconfig.xml

          Show
          Shalin Shekhar Mangar added a comment - An optional boolean init parameter "httpCaching" has been added to RequestHandlerBase. This parameter should be set to true if emitting cache headers is desired. By default, emitting http cache headers is disabled. Users who desire caching must enable this for the handler they want. The example solrconfig.xml has emitting http caching enabled for the StandardRequestHandler, MoreLikeThisHandler and SpellCheckerRequestHandler. I've removed explicit setHttpCaching calls in SearchHandler, MoreLikeThisHandler and SpellCheckerRequestHandler. If a custom request handler explictly calls the SolrQueryResponse#setHttpCaching method then it will override the per-handler configuration in solrconfig.xml Do we need tests for this? svn stat follows: M src/test/test-files/solr/conf/solrconfig-nocache.xml M src/test/test-files/solr/conf/solrconfig.xml M src/java/org/apache/solr/handler/RequestHandlerBase.java M src/java/org/apache/solr/handler/component/SearchHandler.java M src/java/org/apache/solr/handler/SpellCheckerRequestHandler.java M src/java/org/apache/solr/handler/MoreLikeThisHandler.java M example/solr/conf/solrconfig.xml
          Hide
          Hoss Man added a comment -

          the patch seems straight forward, but the default for RequestHandlerBase should be that http caching is "ok"

          Request Handlers that can't be cached will enerally be the exception to the rule (and will probably hardcode setHttpCaching(false)) ... run of the mill custom request handlers that people write which subclass RequestHandlerbase should automaticly start supporting HTTP caching, and if the users of those handlers don't wnat caching they should explicitly turn it off (not vice versa)

          Show
          Hoss Man added a comment - the patch seems straight forward, but the default for RequestHandlerBase should be that http caching is "ok" Request Handlers that can't be cached will enerally be the exception to the rule (and will probably hardcode setHttpCaching(false)) ... run of the mill custom request handlers that people write which subclass RequestHandlerbase should automaticly start supporting HTTP caching, and if the users of those handlers don't wnat caching they should explicitly turn it off (not vice versa)
          Hide
          Shalin Shekhar Mangar added a comment -

          With this patch the default behavior is to send cache headers by default for all responses. RequestHandlers which do not want responses to be cached can explicitly call SolrQueryResponse#setHttpCaching(false). Users who do not want responses for a particular request handler to be cached can add the following to the request handler's configuration section in solrconfig.xml

          <bool name="httpCaching">false</bool>
          
          Show
          Shalin Shekhar Mangar added a comment - With this patch the default behavior is to send cache headers by default for all responses. RequestHandlers which do not want responses to be cached can explicitly call SolrQueryResponse#setHttpCaching(false). Users who do not want responses for a particular request handler to be cached can add the following to the request handler's configuration section in solrconfig.xml <bool name= "httpCaching" > false </bool>
          Hide
          Shalin Shekhar Mangar added a comment -

          Syncing the patch with the trunk. No other changes to the code base.

          Hoss – Do we need anything more in this patch?

          Show
          Shalin Shekhar Mangar added a comment - Syncing the patch with the trunk. No other changes to the code base. Hoss – Do we need anything more in this patch?
          Hide
          Hoss Man added a comment -

          Shalin: I'm sorry dude ... i'm really droping the ball lately.

          if you made the default behavior change then go for it.

          Show
          Hoss Man added a comment - Shalin: I'm sorry dude ... i'm really droping the ball lately. if you made the default behavior change then go for it.
          Hide
          Shalin Shekhar Mangar added a comment -

          Committed revision 683121.

          Show
          Shalin Shekhar Mangar added a comment - Committed revision 683121.

            People

            • Assignee:
              Shalin Shekhar Mangar
              Reporter:
              Shalin Shekhar Mangar
            • Votes:
              2 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development