Характер проблемы
EWS Запрос FindItem со сложностью выше определенного начал сбой
Дата первого сбоя: 1/16/2020, 7: 04: 57.639 UT C
Отказ серверы: Office 365, предположительно версия 15.20.2644.21 , Exchange 2010-2016 не обнаруживают эту проблему
Как это не удается
Ошибки запроса FindItem EWS со следующим сообщением:
Ошибка: ErrorInternalServerError
MessageText: Произошла внутренняя ошибка сервера. Операция не удалась. Этот запрос содержит слишком много столбцов сортировки. Этот поставщик не поддерживает более 6 столбцов для обычного запроса или 4 столбца сортировки для сгруппированного запроса. Имя параметра: sortColumns
Образец ошибочного запроса
<Trace Tag="EwsRequestHttpHeaders" Tid="49" Time="2020-01-16 13:30:09Z">
POST /EWS/Exchange.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
Accept: text/xml
User-Agent: ExchangeServicesClient/0.0.0.0
Accept-Encoding: gzip,deflate
client-request-id: 5102bcc1-5ef1-40c5-ad35-0553901e25b8
return-client-request-id: true
X-AnchorMailbox: *** redacted ***
</Trace>
<Trace Tag="EwsRequest" Tid="49" Time="2020-01-16 13:30:09Z" Version="0.0.0.0">
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<t:RequestServerVersion Version="Exchange2010_SP2" />
<t:ExchangeImpersonation>
<t:ConnectingSID>
<t:SmtpAddress>*** redacted ***</t:SmtpAddress>
</t:ConnectingSID>
</t:ExchangeImpersonation>
</soap:Header>
<soap:Body>
<m:FindItem Traversal="Shallow">
<m:ItemShape>
<t:BaseShape>IdOnly</t:BaseShape>
<t:BodyType>Text</t:BodyType>
<t:AdditionalProperties>
<t:FieldURI FieldURI="item:Subject" />
<t:FieldURI FieldURI="calendar:Start" />
<t:FieldURI FieldURI="calendar:End" />
<t:FieldURI FieldURI="calendar:AppointmentState" />
<t:ExtendedFieldURI DistinguishedPropertySetId="Meeting" PropertyId="3" PropertyType="Binary" />
<t:FieldURI FieldURI="item:ItemId" />
<t:FieldURI FieldURI="item:Categories" />
<t:FieldURI FieldURI="item:ItemClass" />
<t:FieldURI FieldURI="calendar:IsMeeting" />
</t:AdditionalProperties>
</m:ItemShape>
<m:IndexedPageItemView MaxEntriesReturned="100" Offset="0" BasePoint="Beginning" />
<m:Restriction>
<t:And>
<t:Or>
<t:IsEqualTo>
<t:ExtendedFieldURI DistinguishedPropertySetId="Meeting" PropertyId="3" PropertyType="Binary" />
<t:FieldURIOrConstant>
<t:Constant Value="BAAAAIIA4AB0xbcQGoLgCAAAAADA1P970nLVAQAAAAAAAAAAEAAAALoKbuHZ9yFFixiF/WD9c/M=" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:And>
<t:IsEqualTo>
<t:FieldURI FieldURI="item:Subject" />
<t:FieldURIOrConstant>
<t:Constant Value="*** redacted ***" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:IsEqualTo>
<t:FieldURI FieldURI="calendar:Start" />
<t:FieldURIOrConstant>
<t:Constant Value="2019-10-17T14:00:00.000Z" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:IsEqualTo>
<t:FieldURI FieldURI="calendar:End" />
<t:FieldURIOrConstant>
<t:Constant Value="2019-10-17T14:30:00.000Z" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:Not>
<t:Excludes>
<t:FieldURI FieldURI="calendar:AppointmentState" />
<t:Bitmask Value="2" />
</t:Excludes>
</t:Not>
</t:And>
<t:IsEqualTo>
<t:ExtendedFieldURI DistinguishedPropertySetId="Meeting" PropertyId="3" PropertyType="Binary" />
<t:FieldURIOrConstant>
<t:Constant Value="BAAAAIIA4AB0xbcQGoLgCAAAAADQF0k4CMbVAQAAAAAAAAAAEAAAAH51y6gpwXZGsUwXBw8l4bI=" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:And>
<t:IsEqualTo>
<t:FieldURI FieldURI="item:Subject" />
<t:FieldURIOrConstant>
<t:Constant Value="*** redacted ***" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:IsEqualTo>
<t:FieldURI FieldURI="calendar:Start" />
<t:FieldURIOrConstant>
<t:Constant Value="2020-02-07T15:00:00.000Z" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:IsEqualTo>
<t:FieldURI FieldURI="calendar:End" />
<t:FieldURIOrConstant>
<t:Constant Value="2020-02-07T15:30:00.000Z" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
<t:Not>
<t:Excludes>
<t:FieldURI FieldURI="calendar:AppointmentState" />
<t:Bitmask Value="2" />
</t:Excludes>
</t:Not>
</t:And>
</t:Or>
<t:Excludes>
<t:FieldURI FieldURI="calendar:AppointmentState" />
<t:Bitmask Value="4" />
</t:Excludes>
<t:Or>
<t:Not>
<t:Exists>
<t:ExtendedFieldURI DistinguishedPropertySetId="PublicStrings" PropertyName="SyncType_{E706B428-D833-44fc-97B7-8F5A8DD59D35}" PropertyType="String" />
</t:Exists>
</t:Not>
<t:IsEqualTo>
<t:ExtendedFieldURI DistinguishedPropertySetId="PublicStrings" PropertyName="SyncType_{E706B428-D833-44fc-97B7-8F5A8DD59D35}" PropertyType="String" />
<t:FieldURIOrConstant>
<t:Constant Value="Event" />
</t:FieldURIOrConstant>
</t:IsEqualTo>
</t:Or>
</t:And>
</m:Restriction>
<m:ParentFolderIds>
<t:FolderId Id="AAMkADNlMDJhZDY3LWUyNTUtNDBkMC1hODk4LTllYTBkZGY5YTM3MAAuAAAAAAC4YZOICYAzQJ+HEQvGO9soAQBbhZs7tAQ5R5IfrJ0uQp8wAAAAPeC0AAA=" ChangeKey="AgAAABYAAAADvS72GAPGRZ12mQnXam3oAADm5Lgn" />
</m:ParentFolderIds>
</m:FindItem>
</soap:Body>
</soap:Envelope>
</Trace>
<Trace Tag="EwsResponseHttpHeaders" Tid="49" Time="2020-01-16 13:30:10Z">
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Encoding: gzip
Vary: Accept-Encoding
request-id: b9456490-7fd4-4f61-9c79-010ddf73ecae
client-request-id: 5102bcc1-5ef1-40c5-ad35-0553901e25b8
X-CalculatedFETarget: BN7PR02CU001.internal.outlook.com
X-BackEndHttpStatus: 200,200
X-FEProxyInfo: BN7PR02CA0006.NAMPRD02.PROD.OUTLOOK.COM
X-CalculatedBETarget: BN8PR10MB4084.namprd10.prod.outlook.com
X-RUM-Validated: 1
X-MailboxGuid: 3e02ad67-e255-40d0-a898-9ea0ddf9a370
x-EwsHandler: FindItem
X-BeSku: WCS5
X-DiagInfo: BN8PR10MB4084
X-BEServer: BN8PR10MB4084
X-Proxy-RoutingCorrectness: 1
X-Proxy-BackendServerStatus: 200
X-FEServer: BN7PR02CA0006,MN2PR05CA0045
Cache-Control: private
Content-Type: text/xml; charset=utf-8
Date: Thu, 16 Jan 2020 13:30:10 GMT
Set-Cookie: exchangecookie=f06a9fdd9a8646299b768b52b5cc6518; path=/; secure
Server: Microsoft-IIS/10.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
</Trace>
<Trace Tag="EwsResponse" Tid="49" Time="2020-01-16 13:30:10Z" Version="0.0.0.0">
<?xml version="1.0" encoding="utf-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:ServerVersionInfo MajorVersion="15" MinorVersion="20" MajorBuildNumber="2644" MinorBuildNumber="21" Version="V2018_01_08" xmlns:h="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
</s:Header>
<s:Body>
<m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:FindItemResponseMessage ResponseClass="Error">
<m:MessageText>An internal server error occurred. The operation failed., This query contains too many sort columns. This provider does not support more than 6 columns for a normal query, or 4 sort columns for a grouped query.
Parameter name: sortColumns</m:MessageText>
<m:ResponseCode>ErrorInternalServerError</m:ResponseCode>
<m:DescriptiveLinkKey>0</m:DescriptiveLinkKey>
</m:FindItemResponseMessage>
</m:ResponseMessages>
</m:FindItemResponse>
</s:Body>
</s:Envelope>
</Trace>
Предварительное расследование
Серьезность и влияние
Затрагиваются тысячи рабочих пользователей.
Попытки изолировать
Проблема начала проявляться 16 января без каких-либо изменений на стороне приложения, поэтому обновление или изменение Office 365 Exchange Online является подозрительным.
Область действия
ТОЛЬКО для Office 365. В Exchange 2010-2016 такой проблемы нет.
Office 365: затрагивается только часть клиентов, а другая часть работает нормально. Возможно, из-за поэтапного обновления экземпляров Office 365
Проблема, определенно замеченная в версии Office 365 Exchange: 15.20.2644.21
Кажется, проблема не воспроизводится сама по себе: 15.20.2644.20
Примеры серверов Exchange, на которых обнаружена проблема:
- X-BEServer: BN8PR10MB4084
- X-BEServer: BYAPR13MB2583
Сужающая проблема
Кажется, проблема связана со сложностью запроса. Как только мы отбрасываем количество полей в ограничении меньше или равным 5, запрос начинает работать нормально.
Есть ли какие-либо известные исправления / обходные пути для проблемы?