[ https://issues.apache.org/jira/browse/SOLR-17300?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17848868#comment-17848868 ]
ASF subversion and git services commented on SOLR-17300: -------------------------------------------------------- Commit 19a4b6e0af964525d616f2f54d954213b3f55226 in solr's branch refs/heads/branch_9x from Sanjay Dutt [ https://gitbox.apache.org/repos/asf?p=solr.git;h=19a4b6e0af9 ] SOLR-17300: Ensure listeners are copied when re-creating Http2SolrClient using withHttpClient * Http2SolrClient.Builder.withHttpClient now copies HttpListenerFactory (e.g. for auth, metrics, traces, etc.) * Mark Http2SolrClient#addListenerFactory as deprecated to avoid adding listeners after the client is created. Instead, use Http2SolrClient.Builder#withListenerFactory during the client's creation to add all listeners. > Copy existing listeners on re-creation of Http2SolrClient > --------------------------------------------------------- > > Key: SOLR-17300 > URL: https://issues.apache.org/jira/browse/SOLR-17300 > Project: Solr > Issue Type: Sub-task > Reporter: Sanjay Dutt > Assignee: Sanjay Dutt > Priority: Major > Time Spent: 1h 50m > Remaining Estimate: 0h > > For custom settings, such as timeouts, usually a Http2SolrClient is created > using the existing HTTP client using below code. > {code:java} > Http2SolrClient.Builder(leaderBaseUrl) > .withHttpClient(existingHttp2SolrClient) > .withIdleTimeout(soTimeout, TimeUnit.MILLISECONDS) > .withConnectionTimeout(connTimeout, TimeUnit.MILLISECONDS) > .build(); > {code} > If not specified, withHttpClient method would automatically copy over some of > the older configuration automatically to the new Http2SolrClient > {code:java} > if (this.basicAuthAuthorizationStr == null) { > this.basicAuthAuthorizationStr = > http2SolrClient.basicAuthAuthorizationStr; > } > if (this.followRedirects == null) { > this.followRedirects = http2SolrClient.httpClient.isFollowRedirects(); > } > if (this.idleTimeoutMillis == null) { > this.idleTimeoutMillis = http2SolrClient.idleTimeoutMillis; > } > if (this.requestWriter == null) { > this.requestWriter = http2SolrClient.requestWriter; > } > if (this.requestTimeoutMillis == null) { > this.requestTimeoutMillis = http2SolrClient.requestTimeoutMillis; > } > if (this.responseParser == null) { > this.responseParser = http2SolrClient.parser; > } > if (this.urlParamNames == null) { > this.urlParamNames = http2SolrClient.urlParamNames; > } > {code} > Nonetheless there is one field that did not pass over yet -- List of > HttpListenerFactory. This list also includes the interceptor for Auth due to > which re-created client were missing auth credentials and requests were > failing. > *Proposed Solution* :- > Along with other properties, List of Listener Factory should also be copied > over from old to new client using withHttpClient method. > {code:java} > if (this.listenerFactory == null) { > this.listenerFactory = new ArrayList<HttpListenerFactory>(); > http2SolrClient.listenerFactory.forEach(this.listenerFactory::add); > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@solr.apache.org For additional commands, e-mail: issues-h...@solr.apache.org