[
https://issues.apache.org/jira/browse/SOLR-13921?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16971893#comment-16971893
]
Istvan Farkas commented on SOLR-13921:
--------------------------------------
Attached a patch with the proposed fix and a unit test for update requests with
delegation tokens.
> Processing UpdateRequest with delegation token throws NullPointerException
> --------------------------------------------------------------------------
>
> Key: SOLR-13921
> URL: https://issues.apache.org/jira/browse/SOLR-13921
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Components: SolrJ
> Affects Versions: 7.4, 8.3
> Reporter: Istvan Farkas
> Priority: Minor
> Attachments:
> 0001-SOLR-13921-Processing-UpdateRequest-with-delegation-.patch,
> SOLR-13921.patch
>
>
> When sending UpdateRequests with delegation tokens to Solr using SolrJ, the
> createMethod of DelegationTokenHttpSolrClient will throw a
> NullPointerException:
>
> {code:java}
> [junit4] ERROR 3.41s |
> TestSolrCloudWithDelegationTokens.testDelegationTokenSolrClientWithUpdateRequests
> <<<
> [junit4] > Throwable #1: java.lang.NullPointerException
> [junit4] > at
> __randomizedtesting.SeedInfo.seed([B9AE8E4E0CDF1B3D:DBA0B722C813061D]:0)
> [junit4] > at
> org.apache.solr.client.solrj.impl.DelegationTokenHttpSolrClient.createMethod(DelegationTokenHttpSolrClient.java:93)
> [junit4] > at
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:258)
> [junit4] > at
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClient.java:249)
> [junit4] > at
> org.apache.solr.cloud.TestSolrCloudWithDelegationTokens.doSolrRequest(TestSolrCloudWithDelegationTokens.java:246)
> [junit4] > at
> org.apache.solr.cloud.TestSolrCloudWithDelegationTokens.testDelegationTokenSolrClientWithUpdateRequests(TestSolrCloudWithDelegationTokens.java:477)
> [junit4] > at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> [junit4] > at
> java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> [junit4] > at
> java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> [junit4] > at
> java.base/java.lang.reflect.Method.invoke(Method.java:566)
> [junit4] > at java.base/java.lang.Thread.run(Thread.java:834)
> {code}
> This happens to all SolrJ clients including the Spark Crunch indexer which
> use Delegation Tokens and do not specify commit / optimize commands.
> The cause seems to be a missing null check before dereferencing 'params'. The
> intention of the code seems to be verifying if the delegation token is passed
> a parameter of the SolrRequest (which is not supported), however the check
> fails with NPE if the request has no params at all. For update requests which
> do commit or optimize, the setCommand method initializes the params so no
> NPE is thrown.
> {code}
> @Override
> protected HttpRequestBase createMethod(final SolrRequest request, String
> collection) throws IOException, SolrServerException {
> SolrParams params = request.getParams();
> if (params.getParams(DELEGATION_TOKEN_PARAM) != null) {
> throw new IllegalArgumentException(DELEGATION_TOKEN_PARAM + " parameter
> not supported");
> }
> return super.createMethod(request, collection);
> }
> {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]