Skip to content

No ResponseBodyInBytes or StatusCode when 401 #1928

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
TioLuiso opened this issue Mar 17, 2016 · 5 comments
Closed

No ResponseBodyInBytes or StatusCode when 401 #1928

TioLuiso opened this issue Mar 17, 2016 · 5 comments
Assignees

Comments

@TioLuiso
Copy link

We have a Nginx that we use for authentication purposes. When it returns a 401, ElasticClient returns us a response with no status code and no ResponseBodyInBytes.

DebugInformation has the following

Unsuccesful low level call on POST: /xxxxxxxxx/_analyze?field=myfield
# Audit trail of this API call:
 - BadResponse: Node: http://xx.xx.xx.xx:9401/ Exception: PipelineException Took: 00:00:00.0429868
# OriginalException: Elasticsearch.Net.ElasticsearchClientException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> Elasticsearch.Net.PipelineException: Could not authenticate with the specified node. Try verifying your credentials or check your Shield configuration.
   at Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails response) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 285
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 386
   at Elasticsearch.Net.ExceptionExtensions.RethrowKeepingStackTrace(Exception exception) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Extensions\ExceptionExtensions.cs:line 18
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 395
   at Elasticsearch.Net.Transport`1.Request[TReturn](HttpMethod method, String path, PostData`1 data, IRequestParameters requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Transport.cs:line 68
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
# Audit exception in step 0 BadResponse:
Elasticsearch.Net.PipelineException: Could not authenticate with the specified node. Try verifying your credentials or check your Shield configuration.
   at Elasticsearch.Net.RequestPipeline.ThrowBad
Unsuccesful low level call on POST: /xxxxxxxxx/_analyze?field=myfield
# Audit trail of this API call:
 - BadResponse: Node: http://xx.xx.xx.xx:9401/ Exception: PipelineException Took: 00:00:00.0429868
# OriginalException: Elasticsearch.Net.ElasticsearchClientException: One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> Elasticsearch.Net.PipelineException: Could not authenticate with the specified node. Try verifying your credentials or check your Shield configuration.
   at Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails response) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 285
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 386
   at Elasticsearch.Net.ExceptionExtensions.RethrowKeepingStackTrace(Exception exception) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Extensions\ExceptionExtensions.cs:line 18
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 395
   at Elasticsearch.Net.Transport`1.Request[TReturn](HttpMethod method, String path, PostData`1 data, IRequestParameters requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Transport.cs:line 68
   --- End of inner exception stack trace ---
   --- End of inner exception stack trace ---
# Audit exception in step 0 BadResponse:
Elasticsearch.Net.PipelineException: Could not authenticate with the specified node. Try verifying your credentials or check your Shield configuration.
   at Elasticsearch.Net.RequestPipeline.ThrowBadAuthPipelineExceptionWhenNeeded(IApiCallDetails response) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 285
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 386
   at Elasticsearch.Net.ExceptionExtensions.RethrowKeepingStackTrace(Exception exception) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Extensions\ExceptionExtensions.cs:line 18
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 395
   at Elasticsearch.Net.Transport`1.Request[TReturn](HttpMethod method, String path, PostData`1 data, IRequestParameters requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Transport.cs:line 68
# Request:
idvoqxnrnrevcig¬|%=!imgfrhcvkkbyatg
# Response:
<Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>AuthPipelineExceptionWhenNeeded(IApiCallDetails response) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 285
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 386
   at Elasticsearch.Net.ExceptionExtensions.RethrowKeepingStackTrace(Exception exception) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Extensions\ExceptionExtensions.cs:line 18
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 395
   at Elasticsearch.Net.Transport`1.Request[TReturn](HttpMethod method, String path, PostData`1 data, IRequestParameters requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Transport.cs:line 68
# Request:
idvoqxnrnrevcig¬|%=!imgfrhcvkkbyatg
# Response:
<Response stream not captured or already read to completion by serializer. Set DisableDirectStreaming() on ConnectionSettings to force it to be set on the response.>
@TioLuiso
Copy link
Author

After a while, found out that the response that was returned by the connection (and that has the ResponseBodyInBytes and the 401 HttpStatusCode) is kept inside the OriginalException.

@Mpdreamz
Copy link
Member

Which version of NEST is this?

@TioLuiso
Copy link
Author

2.0.5

@Mpdreamz
Copy link
Member

This is closely related to: #1901

and we have several tests that validate ResponseInBytes get set, but you still need to enable DirectStreaming. The statuscode should always be set though.

What are your connection settings and how do you instantiate the client?

When you do

var response = client.Call();

Does client.Call() return or do you get an ElasticsearchClientException being raised?

@Mpdreamz
Copy link
Member

Ahh these tests only tests the ElasticsearchClientExeption (whether thrown or set on the response depending on throwing behaviour set on ConnectionSettings)

Caught the behaviour in a test will send a PR shortly, thanks for reporting @TioLuiso 👍

@Mpdreamz Mpdreamz self-assigned this Mar 23, 2016
@gmarz gmarz added Bug labels Mar 23, 2016
gmarz added a commit that referenced this issue Mar 23, 2016
…h-response

fix #1928 bad auth response misses status code
@gmarz gmarz closed this as completed in cee39ae Mar 23, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants