You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
XmlDocsExtensions.GetXmlDocsSummary(...) is called for the same member concurrently
That member inherits the documentation from a base class/interface
Internally, XmlDocsExtensions.TryGetXmlDocsDocument adds an entry to XmlDocsExtensions.Cache with documentation loaded into XElement. This is the first problematic place, because current implementation of TryGetXmlDocsDocument can return different results for the same key. Be result immutable or if every client got own unique result, then there will be no race condition.
However, there are few places which modify cached entry (XElement), by replacing with actual content without any kind of synchronization. Obviously, modifying the same XElement tree concurrently makes Linq goes nuts.
The following snippet will fail with an exception thrown by Linq implementation:
Commit ID: 33e53f6
Steps:
XmlDocsExtensions.GetXmlDocsSummary(...)
is called for the same member concurrentlyXmlDocsExtensions.TryGetXmlDocsDocument
adds an entry toXmlDocsExtensions.Cache
with documentation loaded into XElement. This is the first problematic place, because current implementation ofTryGetXmlDocsDocument
can return different results for the same key. Be result immutable or if every client got own unique result, then there will be no race condition.The following snippet will fail with an exception thrown by Linq implementation:
In my case, it's about running unit-tests performing a JSON validation using JsonSchema in parallel. JsonSchema is generated on the fly.
The text was updated successfully, but these errors were encountered: