Improved transparency and timing of silo lifecycle (second attempt). #4175
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reapplying "Improved transparency and timing of silo lifecycle. #4116" with fixes to test failures which caused the original PR to be reverted.
Marked wip until it passes full VSO tests.
Subscrivers are now named.
Silo lifecycle now reports stages prior to start.
Example stage reporting:
...100453 Orleans.Runtime.SiloLifecycleSubject] Stage -2147483648: Orleans.Runtime.SiloOptionsLogger
...100453 Orleans.Runtime.SiloLifecycleSubject] Stage 2000: Orleans.Runtime.InsideRuntimeClient, Orleans.Runtime.Silo
...100453 Orleans.Runtime.SiloLifecycleSubject] Stage 4000: Orleans.Runtime.Silo
...100453 Orleans.Runtime.SiloLifecycleSubject] Stage 8000: Orleans.Runtime.Silo
...100453 Orleans.Runtime.SiloLifecycleSubject] Stage 10000: Orleans.Runtime.Versions.GrainVersionStore, Orleans.Storage.AzureTableGrainStorage-AzureStore, Orleans.Storage.AzureTableGrainStorage-PubSubStore, Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider, Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider2
...100453 Orleans.Runtime.SiloLifecycleSubject] Stage 20000: Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider, Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider2
Example timing information:
...100452 Orleans.Runtime.SiloLifecycleSubject] Lifecycle observer Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider2 started in stage 10000 which took 21 Milliseconds.
...100452 Orleans.Runtime.SiloLifecycleSubject] Lifecycle observer Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider2 started in stage 20000 which took 65 Milliseconds.
...100452 Orleans.Runtime.SiloLifecycleSubject] Lifecycle observer Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider2 stopped in stage 20000 which took 20 Milliseconds.
...100452 Orleans.Runtime.SiloLifecycleSubject] Lifecycle observer Orleans.Providers.Streams.Common.PersistentStreamProvider-AzureQueueProvider2 stopped in stage 10000 which took 0 Milliseconds.
Stream provider started in two stages because it initializes in stage 10000, and starts reading events running in stage 20000.