We’re using the C# Elasticsearch.Net API to write to an index. There are many bulk requests, most succeed, some fail because of queue pressure and we retry, etc. Every response object of a client call is of type ElasticsearchResponse. This object has a member called Response which is the json DynamicDictionary. Sometimes (rarely), we see this object set to null, even as the response status code is 200, which we don't expect. It turns out that these calls time out after a minute - it can be seen if instead of calling client.Bulk() you call client.BulkAsync.Wait(), and a timeout exception will be thrown (sync Bulk does not throw even as the client is configured to throw exceptions).
The bigger problem is that there seems to be some sort of client-side connection starvation that seems related to those errors. Eventually, after a random amount of time, all Bulk calls get stuck and never return which blocks all our executor threads, effectively killing the client. Connection starvation happens when the caller of a web API does not clean up (dispose/close) network connections, usually in case of errors (this may be the case here but at this point I'm speculating).
Has anyone encountered this? Is it a known bug? Fixed in a newer version? We are using Elasticsearch.Net 1.7.2. The server runs 1.7.1.