This release contains major bug fixes, and is very recommended to upgrade. In short,
OperationCanceledException doesn’t cause background processing to stop now. Dashboard UI doesn’t leak
READ UNCOMMITTED isolation level, and
READ_COMMITTED_SNAPSHOT option doesn’t lead background jobs to stuck in Enqueued state.
The first problem appears, when
OperationCanceledException is thrown by a user code – workers considered it as a signal that shutdown request was initiated. This lead to a chain reaction, where one worker facing with an exception, re-queues a job and stops; then other worker picks up the same job, re-queues it and stops; etc, ending with all the workers are stopped. There’s now additional check whether server is going to shutdown, and this exception has special meaning only if it’s true. So methods, filters and processes can throw this exception without any side effects now.
The second exception is related to possible
READ UNCOMMITTED transaction isolation level leaks. This is an old well-known problem (I even don’t understand why it wasn’t fixed yet) that exists in SQL Server ≤ 2012 (yep, it was fixed in 2014). This level is used in Dashboard UI to prevent blocking operations. Now all the dashboard queries are using
NOLOCK table hint instead of transactions.
OperationCanceledExceptionexceptions don’t cause background processing to stop.
Fixed – Don’t leak Dashboard UI’s
READ UNCOMMITTEDisolation level to other parts of an application.
READ_COMMITTED_SNAPSHOToption doesn’t prevent background jobs from being processed.