Обновление Azure CosmosDB приводит к ошибке «Запрос Distict требует соответствующего порядка, чтобы вернуть маркер продолжения» - PullRequest
0 голосов
/ 08 февраля 2019

Мы запускаем производственное приложение в 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 февраля?

...