[
https://issues.apache.org/jira/browse/SOLR-14160?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Noble Paul updated SOLR-14160:
------------------------------
Description:
The list of replicas to which requests are sent are identified in a static
fashion. There is no way to cleanly plugin alternate logic of identifying the
replica list .
two major interfaces abstracted out are
{code:java}
public interface HeaderInterceptor {
/**Names of headers to be read from the response
*/
List<String> responseHeaders();
/**The callback received after a response. This must be called with a 'null'
if there was no such header
*
*/
void responseHeaderVal(String key, String val);
/**The headers that must be added to the request.
* @return return null or an empty map if nothing needs to added
*/
Map<String, String > requestHeaders();
}
{code}
{code:java}
/**This interface gives urls one by one instead of giving a full list.
* This also lets the implementation provide extra details as HTTP headers
*
*/
public interface UrlProvider extends HeaderInterceptor {
/**Give the base url for the next request to be fired. This is invoked the
first time
* a request needs to be fired, or subsequent after {@link
UrlProvider#toRetry()} returns true
* @return null if no more nodes/cores are available
*/
String nextBaseurl();
/**Verify header value. This callback WILL be given if responseHeaderName is
supplied, even if it is null
* @return true if the request should be retried
* Return the error message if there is something wrong with the response
*/
boolean toRetry() throws SolrException;
}
{code}
was:
The list of replicas to which requests are sent are identified in a static
fashion. There is no way to cleanly plugin alternate logic of identifying the
replica list .
two major interfaces abstracted out are
{code:java}
/**Names of headers to be read from the response
*/
List<String> responseHeaders();
/**The callback received after a response. This must be called with a 'null'
if there was no such header
*
*/
void responseHeaderVal(String key, String val);
/**The headers that must be added to the request.
* @return return null or an empty map if nothing needs to added
*/
Map<String, String > requestHeaders();
{code}
{code:java}
/**This interface gives urls one by one instead of giving a full list.
* This also lets the implementation provide extra details as HTTP headers
*
*/
public interface UrlProvider extends HeaderInterceptor {
/**Give the base url for the next request to be fired. This is invoked the
first time
* a request needs to be fired, or subsequent after {@link
UrlProvider#toRetry()} returns true
* @return null if no more nodes/cores are available
*/
String nextBaseurl();
/**Verify header value. This callback WILL be given if responseHeaderName is
supplied, even if it is null
* @return true if the request should be retried
* Return the error message if there is something wrong with the response
*/
boolean toRetry() throws SolrException;
}
{code}
> Abstract out the replica identification interface for internode requests
> ------------------------------------------------------------------------
>
> Key: SOLR-14160
> URL: https://issues.apache.org/jira/browse/SOLR-14160
> Project: Solr
> Issue Type: Improvement
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Noble Paul
> Assignee: Noble Paul
> Priority: Major
>
> The list of replicas to which requests are sent are identified in a static
> fashion. There is no way to cleanly plugin alternate logic of identifying the
> replica list .
> two major interfaces abstracted out are
> {code:java}
> public interface HeaderInterceptor {
> /**Names of headers to be read from the response
> */
> List<String> responseHeaders();
> /**The callback received after a response. This must be called with a
> 'null' if there was no such header
> *
> */
> void responseHeaderVal(String key, String val);
> /**The headers that must be added to the request.
> * @return return null or an empty map if nothing needs to added
> */
> Map<String, String > requestHeaders();
> }
> {code}
> {code:java}
> /**This interface gives urls one by one instead of giving a full list.
> * This also lets the implementation provide extra details as HTTP headers
> *
> */
> public interface UrlProvider extends HeaderInterceptor {
> /**Give the base url for the next request to be fired. This is invoked the
> first time
> * a request needs to be fired, or subsequent after {@link
> UrlProvider#toRetry()} returns true
> * @return null if no more nodes/cores are available
> */
> String nextBaseurl();
> /**Verify header value. This callback WILL be given if responseHeaderName
> is supplied, even if it is null
> * @return true if the request should be retried
> * Return the error message if there is something wrong with the response
> */
> boolean toRetry() throws SolrException;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]