Apr 12, 2021
Jun 14, 2021
Closed, Fixed and tested
In CMS UI 11.32.0, ITelemetryProvider was introduced. The internal implementation CmsTelemetryProvider causes sites to hang occasionally.
StructureMap is used to get an instance of the CmsTelemetryProvider. While StructureMap instanciates it, it holds a writer lock, blocking other threads from getting instances from StructureMap's service container. In CmsTelemetryProvider ctor, Parallel.ForEach is used to find and load modules (ThreadA). If any of those modules needs StructureMap to get an instance (ThreadB), they will deadlock with the Parallel.ForEach thread.