Scenario:
2 x front-end load balanced servers (round robin) Both running the same DD4T MVC application Single delivery DB behind some services that abstract the Tridion2011SP1Provider.
Symptoms:
Intermittent 100% CPU usage when accessing Model.Fields[id] which ends up crashing the W3WP process.
Diagnostics done:
Debugdiag stack trace points to a non-terminating thread calling the .ContainsKey method and a race-condition in the IDictionary type that IFieldSet abstracts.
Question:
Is this a common scenario to be expected in a load balanced scenario? Are there any obvious workarounds (other than locking on multiple reads?) - I'm thinking .TryGetValue, or implementing a custom dictionary that is thread-safe, for example ConcurrentDictionary?