Skip to content

Deserialization exception on index with refresh_interval set to -1  #1860

Closed
@devodo

Description

@devodo

I'm getting an exception calling IElasticClient.GetIndex on an index with refresh_interval set to -1.

It looks like Elasticsearch is returning the value as a string with value "-1" and the Time(string timeUnit) constructor fails to parse this.

I'm running Elasticsearch 2.1.1 and Nest 2.0.2

The get index response from server is as follows:

{
  "unittests_202f924a92ce4f6cbf2e03c0a4dbf780_936eef1face8435783905d3ed8a039fa" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "creation_date" : "1456226507873",
        "refresh_interval" : "-1",
        "number_of_shards" : "5",
        "number_of_replicas" : "1",
        "uuid" : "A0RI04jfQMODn-nmX8hknQ",
        "version" : {
          "created" : "2010199"
        }
      }
    },
    "warmers" : { }
  }
}

Stack trace is as follows:

Elasticsearch.Net.UnexpectedElasticsearchClientException : Time expression '-1' string is invalid
Parameter name: timeUnit
  ----> System.ArgumentException : Time expression '-1' string is invalid
Parameter name: timeUnit`

   at Elasticsearch.Net.Transport.Request[TReturn](HttpMethod method, String path, PostData data, IRequestParameters requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Transport.cs:line 88
   at Elasticsearch.Net.ElasticLowLevelClient.IndicesGet[T](String index, Func requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\ElasticLowLevelClient.Generated.cs:line 2910
   at Nest.LowLevelDispatch.IndicesGetDispatch[T](IRequest p) in c:\code\elasticsearch-net\src\Nest\_Generated\_LowLevelDispatch.generated.cs:line 1398
   at Nest.ElasticClient.Nest.IHighLevelToLowLevelDispatcher.Dispatch[TRequest,TQueryString,TResponse](TRequest request, Func responseGenerator, Func dispatch) in c:\code\elasticsearch-net\src\Nest\ElasticClient.cs:line 56
   at Kastr.Domain.Search.IndexAdmin.GetIndices(String indexName) in C:\dev\Kastr\backend\src\Kastr.Domain.Search\IndexAdmin.cs:line 314
   at Kastr.Domain.Tests.Search.IndexAdminTests.CanSetRefreshInterval() in C:\dev\Kastr\backend\src\Kastr.Domain.Tests\Search\IndexAdminTests.cs:line 175
--ArgumentException
   at Nest.Time..ctor(String timeUnit) in c:\code\elasticsearch-net\src\Nest\CommonOptions\TimeUnit\Time.cs:line 63
   at Nest.TimeJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in c:\code\elasticsearch-net\src\Nest\CommonOptions\TimeUnit\TimeJsonConverter.cs:line 19
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
   at Newtonsoft.Json.Linq.JToken.ToObject[T]()
   at Nest.IndexSettingsConverter.Set[T](IIndexSettings s, IDictionary settings, String key, Action assign, JsonSerializer serializer) in c:\code\elasticsearch-net\src\Nest\IndexModules\IndexSettings\Settings\IndexSettingsConverter.cs:line 211
   at Nest.IndexSettingsConverter.SetKnownIndexSettings(JsonReader reader, JsonSerializer serializer, IIndexSettings s) in c:\code\elasticsearch-net\src\Nest\IndexModules\IndexSettings\Settings\IndexSettingsConverter.cs:line 121
   at Nest.IndexSettingsConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in c:\code\elasticsearch-net\src\Nest\IndexModules\IndexSettings\Settings\IndexSettingsConverter.cs:line 108
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Populate(JsonReader reader, Object target)
   at Nest.FromJson.ReadAs[T](JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in c:\code\elasticsearch-net\src\Nest\CommonAbstractions\SerializationBehavior\GenericJsonConverters\FromJson.cs:line 15
   at Nest.ReadAsTypeJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in c:\code\elasticsearch-net\src\Nest\CommonAbstractions\SerializationBehavior\GenericJsonConverters\ReadAsTypeJsonConverter.cs:line 19
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateDictionary(IDictionary dictionary, JsonReader reader, JsonDictionaryContract contract, JsonProperty containerProperty, String id)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Nest.JsonNetSerializer.Deserialize[T](Stream stream) in c:\code\elasticsearch-net\src\Nest\CommonAbstractions\SerializationBehavior\JsonNetSerializer.cs:line 90
   at Nest.ElasticClient.DeserializeGetIndexResponse(IApiCallDetails response, Stream stream) in c:\code\elasticsearch-net\src\Nest\Indices\IndexManagement\GetIndex\ElasticClient-GetIndex.cs:line 56
   at Elasticsearch.Net.ResponseBuilder.SetBody(ElasticsearchResponse response, Stream stream) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\ResponseBuilder.cs:line 70
   at Elasticsearch.Net.ResponseBuilder.ToResponse() in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\ResponseBuilder.cs:line 31
   at Elasticsearch.Net.RequestPipeline.CallElasticsearch[TReturn](RequestData requestData) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Pipeline\RequestPipeline.cs:line 382
   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 394
   at Elasticsearch.Net.Transport.Request[TReturn](HttpMethod method, String path, PostData data, IRequestParameters requestParameters) in c:\code\elasticsearch-net\src\Elasticsearch.Net\Transport\Transport.cs:line 68

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions