public override async Task StartAsync(CancellationToken token) { await Environment.StartAsync(token).ConfigureAwait(false); await base.StartAsync(token).ConfigureAwait(false); var count = 0; while (count < RetryCount) { try { foreach (var qe in QueryEvaluators) { qe.GetInstance <IReactiveConnection>().Ping(); } QueryCoordinator.GetInstance <IReactiveConnection>().Ping(); break; } #pragma warning disable CA1031 // REWIEW: Do not catch general exception types. catch { Console.WriteLine("Waiting for services to start (retry attempt {0})...", ++count); } #pragma warning restore CA1031 } if (count == RetryCount) { throw new InvalidOperationException("Error starting the multi-role platform."); } }
public virtual async Task StopAsync(CancellationToken token) { await QueryCoordinator.StopAsync(token).ConfigureAwait(false); foreach (var queryEvaluator in QueryEvaluators) { await queryEvaluator.StopAsync(token).ConfigureAwait(false); } }
public virtual async Task StartAsync(CancellationToken token) { var clientProvider = new BinaryClientFormatterSinkProvider(); var serverProvider = new BinaryServerFormatterSinkProvider { TypeFilterLevel = TypeFilterLevel.Full }; var props = new System.Collections.Hashtable { { "port", 0 }, { "name", Guid.NewGuid().ToString() }, { "typeFilterLevel", TypeFilterLevel.Full } }; ChannelServices.RegisterChannel(new TcpChannel(props, clientProvider, serverProvider), ensureSecurity: false); _configuration.MessagingConnection = _environment.MessagingService.GetInstance <IReactiveMessagingConnection>(); _configuration.StateStoreConnection = _environment.StateStoreService.GetInstance <IReactiveStateStoreConnection>(); _configuration.KeyValueStoreConnection = _environment.KeyValueStoreService.GetInstance <ITransactionalKeyValueStoreConnection>(); _configuration.StorageType = _environment.StorageType; if (_configuration.StorageType == MetadataStorageType.Remoting) { _configuration.StorageConnection = _environment.MetadataService.GetInstance <IReactiveStorageConnection>(); } else if (_configuration.StorageType == MetadataStorageType.Azure) { _configuration.AzureConnectionString = _environment.AzureConnectionString; } foreach (var queryEvaluator in QueryEvaluators) { if (_configuration.StorageType == MetadataStorageType.Remoting) { queryEvaluator.Register(_environment.MetadataService); } queryEvaluator.Register(_environment.StateStoreService); queryEvaluator.Register(_environment.MessagingService); queryEvaluator.Register(_environment.KeyValueStoreService); await queryEvaluator.StartAsync(token).ConfigureAwait(false); _configuration.QueryEvaluatorConnections.Add(queryEvaluator.GetInstance <IReactiveQueryEvaluatorConnection>()); QueryCoordinator.Register(queryEvaluator); } if (_configuration.StorageType == MetadataStorageType.Remoting) { QueryCoordinator.Register(_environment.MetadataService); } await QueryCoordinator.StartAsync(token).ConfigureAwait(false); }