# NEST 2.5.1 - Cancel SearchAsync method

**URL:** <https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006>\
**Category:** Elasticsearch\
**Created:** [January 18, 2017, 1:22pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006 "2017-01-18T13:22:51Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [January 18, 2017, 1:22pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/1 "2017-01-18T13:22:51Z")

</div>

Hi All,

Is there any way to cancel SearchAsync request method in NEST?

I am doing it like this:

```
var request = new SearchRequest(index, filter.Types)
      {
        RequestConfiguration = new RequestConfiguration()
        {
          CancellationToken = filter.CancellationToken
        },
        Query = query,
        Size = _limitRecordCount,
        Scroll = _scrollTime,
        Sort = sortFields,
      };
      var result = await _client.SearchAsync<ElasticMessage>(request).ConfigureAwait(false);

```

but search response is not cancellable

Thanks

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [January 23, 2017, 11:02am UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/2 "2017-01-23T11:02:59Z")

</div>

Hi @forloop

Could you please help me?

Thanks

---

<div class="post-metadata">

**Author:** ![forloop](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/forloop/32/9021_2.png) [@forloop](https://discuss.elastic.co/u/forloop)\
**Post date:** [January 23, 2017, 11:48am UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/3 "2017-01-23T11:48:41Z")

</div>

> [@Denis\_Lamanov](#):
>
> but search response is not cancellable

How are you determining that the request is not cancelled?

There was a regression in 2.x and some elements of the HTTP pipeline that were not cancellable, but these were corrected in NEST 2.5.0 with PR [fix #2438 make sure each async part of HttpConnection is abortable by Mpdreamz · Pull Request #2440 · elastic/elasticsearch-net · GitHub](https://github.com/elastic/elasticsearch-net/pull/2440). There's an example on that PR that uses Fiddler to check cancellation behaviour.

What platform are you using (.NET Framework, .NET Core ) and what OS (Windows)? Reason I ask is that they have different `IConnection` implementations.

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [January 23, 2017, 2:45pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/4 "2017-01-23T14:45:34Z")

</div>

Hi @forloop,

We use

server: ElasticSearch 5.1.2 on CentOS 6.6,  
client: .NET Framework 4.6.2, Windows 7, 8.1, NEST 2.5.2

If I do \_cancelTokenSource.Cancel() nothing will happen and server will return result after query on server finished.  
Checked this using Fiddler.  
As I correctly understand http connection should be broken in this situation.

Thanks

---

<div class="post-metadata">

**Author:** ![forloop](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/forloop/32/9021_2.png) [@forloop](https://discuss.elastic.co/u/forloop)\
**Post date:** [January 23, 2017, 9:43pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/5 "2017-01-23T21:43:03Z")

</div>

First thing I recommend is [updating NEST to the latest 5.x version](https://www.nuget.org/packages/Nest); 2.5.2 is not compatible with Elasticsearch 5.1.2 - it may work for the most part but where there are breaking changes between Elasticsearch 2.x. and 5.x, NEST 2.5.2 will not work correctly.

After updating to NEST 5.x, the `CancellationToken` can be passed as a parameter to the `SearchAsync<T>()` call. Could you try with this using Fiddler and report what you see?

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [January 23, 2017, 10:04pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/6 "2017-01-23T22:04:52Z")

</div>

Sure, will try and report tomorrow.

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [January 24, 2017, 12:04pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/7 "2017-01-24T12:04:58Z")

</div>

Hi @forloop,

Today I updated project to NEST 5.0.1, but still can't cancel query.

Use this code:

> \_cancelTokenSource = new CancellationTokenSource();

> var request = new SearchRequest(index, filter.Types)  
> {  
> Query = query,  
> Size = \_limitRecordCount,  
> Scroll = \_scrollTime,  
> Sort = sortFields  
> };

> var result = await \_client.SearchAsync(request, \_cancelTokenSource.Token);

As I correctly understand I can cancel a query in any part of execution time, even if the query is still running on server.

So, in order to cancel the query I just run this code:

> \_cancelTokenSource.Cancel();

Do you have any ideas why a query is not cancellable?

Thanks

---

<div class="post-metadata">

**Author:** ![Denis\_Lamanov](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/denis_lamanov/32/13111_2.png) [@Denis\_Lamanov](https://discuss.elastic.co/u/Denis_Lamanov)\
**Post date:** [January 24, 2017, 3:32pm UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/8 "2017-01-24T15:32:35Z")

</div>

We use HTTPS. Can it be the reason?

Thanks

---

<div class="post-metadata">

**Author:** ![forloop](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/forloop/32/9021_2.png) [@forloop](https://discuss.elastic.co/u/forloop)\
**Post date:** [January 27, 2017, 2:23am UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/9 "2017-01-27T02:23:28Z")

</div>

> [@Denis\_Lamanov](#):
>
> We use HTTPS. Can it be the reason?

I don't _think_ so.

How are you asserting that the query is **not** cancelled?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 24, 2017, 2:23am UTC](https://discuss.elastic.co/t/nest-2-5-1-cancel-searchasync-method/72006/10 "2017-02-24T02:23:33Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
