Мы запускаем производственное приложение в Azure CosmosDB не менее года, и сегодня утром 6 февраля 2019 г. около 10:00 (по восточному времени -5) наше приложение начало возвращать ошибки HTTP 500 без причины.
После исчерпывающего изучения мы обнаружили, что ошибка поступает из библиотеки SQL .NET API Azure CosmosDB версии 2.2.2, возвращающей следующую ошибку:
Запрос Distict требует соответствующего порядка, чтобывернуть токен продолжения
Нет, я не делал опечатку со словом "Distict" вместо "Distinct";Microsoft сделал!Это вырезка и вставка из ошибки.
Вот наш запрос:
SELECT DISTINCT VALUE c.city_sm
FROM c
WHERE c.partition = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
AND c.dataview_id = 'aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee'
AND c.dataview_ver = 260
AND c.type = 'city_sm'
AND c.culture = 'fr'
На стороне .NET мы используем следующие Client.FeedOptions и код:
Client.FeedOptions.MaxItemCount = 100
' Query the list of items
oQuery = BuildSearchSqlQuerySpec(Of ItemType)(Account, DataView, SearchParams)
oDDBResult = DDClient.CreateDocumentQuery(Of ItemType)(
Client.UriFactory.CreateDocumentCollectionUri(Core.Config.PublishDB.Database, Core.Config.PublishDB.Collection),
oQuery,
oOptions).AsDocumentQuery()
oResponse = oDDBResult.ExecuteNextAsync(Of ItemType).Result
И после запроса мы пытаемся получить токен продолжения следующим образом:
If (oDDBResult.HasMoreResults) Then
oResult.next_token = oResponse.ResponseContinuation
End If
Это происходит, когда возникает ошибка, и она кажется возвращаемой библиотекой SQL, а неСервер AZURE, поскольку у меня нет никаких ошибок в Azure.
Я попытался добавить ORDER BY c.city_sm в свой запрос, чтобы решить эту проблему.У меня больше не было ошибок, но запрос не возвращал записей, вероятно, потому что у меня не было индекса диапазона в поле c.city_sm.Чтобы быстро решить проблему с производственным приложением, я просто удалил ключевое слово DISTINCT, и оно сработало.
Как они могут что-то изменить на производственном сервере AZURE, что нарушает существующий код?Я не знаю, как связаться с Microsoft, и мне интересно, если кто-то еще испытывал проблемы в тот день 6 февраля?