EdgeTransport.exe crashes if seek operation failed in Exchange Server 2010

Applies to: Exchange Server 2010 Service Pack 3Exchange Server 2010 EnterpriseExchange Server 2010 Standard

Symptoms


The Microsoft Exchange Transport service (EdgeTransport.exe) crashes with a Microsoft.Exchange.Transport.Storage.DataSeekException exception on a Microsoft Exchange Server 2010 Hub Transport server. Additionally, the following events are logged in the Application log:
Log Name: Application
Event ID: 10003
Task Category: PoisonMessage
Level: Error
Keywords: Classic
Description:
The transport process failed during message processing with the following call stack:
Microsoft.Exchange.Transport.Storage.DataSeekException: Seek operation failed.
   at Microsoft.Exchange.Transport.Storage.DataRow.SeekCurrent(DataTableCursor cursor)
   at Microsoft.Exchange.Transport.Storage.DataRow.MaterializeDelete(DataTableCursor cursor)
   at Microsoft.Exchange.Transport.Storage.DataRow.MaterializeToCursor(DataTableCursor cursor, Func`1 checkpointCallback)
   at Microsoft.Exchange.Transport.ShadowRedundancy.ShadowRedundancyManager.PrimaryServerInfo.DeleteLazy(IEnumerable`1 serversToDelete)
   at Microsoft.Exchange.Transport.ShadowRedundancy.ShadowRedundancyManager.UpdateQueues()
   at Microsoft.Exchange.Transport.RemoteDelivery.QueueManager.UpdateAllQueuesCallback(Object state)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallbackInternal(_ThreadPoolWaitCallback tpWaitCallBack)
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback(Object state)

Log Name: Application
Event ID: 4999
General: Task Category
Level: Error
Keywords: Classic
Description:
Watson report about to be sent for process id: Process ID, with parameters: E12, Build Type, Version Number, edgetransport, M.Exchange.Transport, METSDataRow.SeekCurrent, METStorage.DataSeekException, xxxx, Version Number
ErrorReportingEnabled: False

Cause


This issue occurs because the EdgeTransport.exe process tries to find the current row on the database without checking the existence of the rows when the redundant copy is deleted. If the deletion is fired before committing the current row, a Microsoft.Exchange.Transport.Storage.DataSeekException exception is thrown.

Resolution


To resolve this issue, install the following update rollup:
2917508 Description of Update Rollup 5 for Exchange Server 2010 Service Pack 3

Status


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.