コード例 #1
0
        public ClusterMonitorService(
            IServiceProvider sp,
            IClusterRequestHandler _node,
            IEntitiesRepository entitiesRepository,
            MetricManagementService metricManagementService,
            IMetricTicksRepository metricTicksRepository,
            IDatabaseMetricsCollector databaseMetricsCollector,
            NodeStateService nodeStateService,
            IOptions <ClusterOptions> clusterOptions)
        {
            _metricManagementService = metricManagementService;
            // var sp = serviceProvider.CreateScope().ServiceProvider;
            _mediator = sp.GetService <IMediator>();
            _logger   = sp.GetService <ILogger <ClusterMonitorService> >();
            _state    = sp.GetService <IClusterStateService>();

            _logger.LogInformation("Starting clean up service...");
            node = _node;
            _entitiesRepository       = entitiesRepository;
            _metricTicksRepository    = metricTicksRepository;
            _databaseMetricsCollector = databaseMetricsCollector;
            monitoringTimer           = new System.Threading.Timer(CollectMetricsEventHandler);
            node.MetricGenerated     += metricGenerated;
            _nodeStateService         = nodeStateService;
            _clusterOptions           = clusterOptions;
            Start();
        }
コード例 #2
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env,
                              IBaseRepository <TestState> repository,
                              IRaftService raftService,
                              IDataService dataService,
                              ITaskService taskService,
                              ILogger <Startup> logger,
                              IClusterRequestHandler clusterRequestHandler)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
                app.UseHsts();
            }

            //  node.MetricGenerated += metricGenerated;

            clusterRequestHandler.MetricGenerated += metricGenerated;

            app.Use(async(context, next) =>
            {
                if (context.Request.Path == "/api/kill" && context.Request.Method == "POST")
                {
                    Killed = true;
                    logger.LogInformation("Killing node");
                    raftService.SetNodeRole(Domain.Enums.NodeState.Disabled);
                }

                if (context.Request.Path == "/api/revive" && context.Request.Method == "POST")
                {
                    Killed = false;
                    logger.LogInformation("Restoring node");
                    raftService.SetNodeRole(Domain.Enums.NodeState.Follower);
                }

                if (Killed == false)
                {
                    await next();
                }
                else
                {
                    context.Abort();
                }
            });

            app.UseSwagger();

            // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
            // specifying the Swagger JSON endpoint.
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            });

            app.UseHttpsRedirection();
            app.UseMvc();
        }
コード例 #3
0
 public CreateStepCommandHandler(
     IEntitiesRepository entitiesRepository,
     IClusterStateService service,
     IClusterRequestHandler node)
 {
     _entitiesRepository  = entitiesRepository;
     _clusterStateService = service;
     _node = node;
 }
コード例 #4
0
 public SnapshottingTests()
 {
     provider = TestUtility.GetFullNodeProvider();
     provider.GetService <IStateMachine <TestState> >().CurrentState             = JsonConvert.DeserializeObject <TestState>("{\"Values\":[],\"ObjectLocks\":{},\"Nodes\":{\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\":{\"Name\":\"\",\"TransportAddress\":\"https:\\/\\/localhost:5022\",\"Id\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"IsContactable\":true},\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\":{\"Name\":\"\",\"TransportAddress\":\"https:\\/\\/localhost:5023\",\"Id\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"IsContactable\":true},\"e3cde308-24ea-41cf-9992-30c5bc200b1c\":{\"Name\":\"\",\"TransportAddress\":\"https:\\/\\/localhost:5021\",\"Id\":\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"IsContactable\":true}},\"Indexes\":{\"number\":{\"Type\":\"number\",\"Shards\":[{\"Id\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"PrimaryAllocation\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"InsyncAllocations\":[\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"e3cde308-24ea-41cf-9992-30c5bc200b1c\"],\"StaleAllocations\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"LatestOperationPos\":276}]}},\"ClusterTasks\":{\"4c4dfffe-dce9-4d1f-b09f-72f2c3d4f73b\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"4c4dfffe-dce9-4d1f-b09f-72f2c3d4f73b\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Description\":null,\"NodeId\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:02:53.2286185Z\",\"CompletedOn\":\"2020-01-12T14:02:56.3238116Z\",\"ErrorMessage\":null},\"5b2cc49a-08d7-49a3-aef9-581a394b74bd\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"5b2cc49a-08d7-49a3-aef9-581a394b74bd\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":0,\"CreatedOn\":\"2020-01-12T14:04:23.319406Z\",\"CompletedOn\":null,\"ErrorMessage\":null},\"f2bdf90a-3c63-49c3-bc17-ebd831effd69\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"f2bdf90a-3c63-49c3-bc17-ebd831effd69\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:03:50.5790822Z\",\"CompletedOn\":\"2020-01-12T14:03:54.5473028Z\",\"ErrorMessage\":null},\"26030ab2-dea5-4e0b-b81f-aaa87371ba7c\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"26030ab2-dea5-4e0b-b81f-aaa87371ba7c\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_76153079-e84a-4ca4-926d-7be8ebcacaad\",\"Description\":null,\"NodeId\":\"76153079-e84a-4ca4-926d-7be8ebcacaad\",\"Status\":0,\"CreatedOn\":\"2020-01-12T14:03:47.4440007Z\",\"CompletedOn\":null,\"ErrorMessage\":null},\"d1332e8c-ff4a-475f-80e1-7d69673d21fb\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"d1332e8c-ff4a-475f-80e1-7d69673d21fb\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:04:13.8324568Z\",\"CompletedOn\":\"2020-01-12T14:04:16.0778643Z\",\"ErrorMessage\":null},\"0319ec31-c92e-4e3e-a4c5-681974ed6d79\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"0319ec31-c92e-4e3e-a4c5-681974ed6d79\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:03:54.2887234Z\",\"CompletedOn\":\"2020-01-12T14:03:57.3013951Z\",\"ErrorMessage\":null},\"28b4b747-94a9-465c-ab1f-5329568cf43c\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"28b4b747-94a9-465c-ab1f-5329568cf43c\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_76153079-e84a-4ca4-926d-7be8ebcacaad\",\"Description\":null,\"NodeId\":\"76153079-e84a-4ca4-926d-7be8ebcacaad\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:02:35.3503546Z\",\"CompletedOn\":\"2020-01-12T14:02:36.9445668Z\",\"ErrorMessage\":null},\"b5746552-8323-4f8b-9208-6caf1d190723\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"b5746552-8323-4f8b-9208-6caf1d190723\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Description\":null,\"NodeId\":\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:03:47.443823Z\",\"CompletedOn\":\"2020-01-12T14:03:48.3390348Z\",\"ErrorMessage\":null},\"f25c9baf-557b-4e4b-b392-7c002d46265e\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"f25c9baf-557b-4e4b-b392-7c002d46265e\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Description\":null,\"NodeId\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:04:13.8325267Z\",\"CompletedOn\":\"2020-01-12T14:04:25.788778Z\",\"ErrorMessage\":null},\"1176fad5-0a7b-4be6-bfee-bb5daab1fd1a\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"1176fad5-0a7b-4be6-bfee-bb5daab1fd1a\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Description\":null,\"NodeId\":\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:03:09.0529522Z\",\"CompletedOn\":\"2020-01-12T14:03:12.6117176Z\",\"ErrorMessage\":null},\"b7aac0f6-f5c5-4369-8d35-dda93ab5c8e3\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"b7aac0f6-f5c5-4369-8d35-dda93ab5c8e3\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Description\":null,\"NodeId\":\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:04:13.8323067Z\",\"CompletedOn\":\"2020-01-12T14:04:26.7999775Z\",\"ErrorMessage\":null},\"52c1b7f2-5b56-440d-b1ca-972125c56abd\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"52c1b7f2-5b56-440d-b1ca-972125c56abd\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Description\":null,\"NodeId\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:03:47.4441459Z\",\"CompletedOn\":\"2020-01-12T14:03:49.0200978Z\",\"ErrorMessage\":null},\"30bbec29-6ee3-45b2-ad3b-3a66de889cc7\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"30bbec29-6ee3-45b2-ad3b-3a66de889cc7\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_76153079-e84a-4ca4-926d-7be8ebcacaad\",\"Description\":null,\"NodeId\":\"76153079-e84a-4ca4-926d-7be8ebcacaad\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:02:53.2285595Z\",\"CompletedOn\":\"2020-01-12T14:02:55.5036054Z\",\"ErrorMessage\":null},\"68972d54-7abf-4b0e-bd1e-baef8bf0911d\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"68972d54-7abf-4b0e-bd1e-baef8bf0911d\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Description\":null,\"NodeId\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:02:35.3504115Z\",\"CompletedOn\":\"2020-01-12T14:02:37.57588Z\",\"ErrorMessage\":null},\"3626d27b-19e6-448b-9d2c-39186ad18a90\":{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"3626d27b-19e6-448b-9d2c-39186ad18a90\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_057a4fa5-af06-42ec-94c9-e5849d977a7f\",\"Description\":null,\"NodeId\":\"057a4fa5-af06-42ec-94c9-e5849d977a7f\",\"Status\":0,\"CreatedOn\":\"2020-01-12T14:02:35.3501707Z\",\"CompletedOn\":null,\"ErrorMessage\":null}}}");
     provider.GetService <INodeStorage <TestState> >().Logs                      = JsonConvert.DeserializeObject <SortedList <int, LogEntry> >("{\"45\":{\"Term\":6,\"Index\":45,\"Commands\":[{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"f2bdf90a-3c63-49c3-bc17-ebd831effd69\",\"Status\":5,\"CompletedOn\":\"0001-01-01T00:00:00\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"46\":{\"Term\":6,\"Index\":46,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"StaleAllocationsToRemove\":[\"76153079-e84a-4ca4-926d-7be8ebcacaad\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"0319ec31-c92e-4e3e-a4c5-681974ed6d79\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:03:54.2887234Z\",\"CompletedOn\":\"2020-01-12T14:03:57.3013951Z\",\"ErrorMessage\":null}],\"TasksToRemove\":null,\"TasksToUpdate\":null,\"DebugLog\":null}]},\"47\":{\"Term\":6,\"Index\":47,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"InsyncAllocationsToAdd\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"StaleAllocationsToRemove\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"f2bdf90a-3c63-49c3-bc17-ebd831effd69\",\"Status\":1,\"CompletedOn\":\"2020-01-12T14:03:54.5473028Z\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"48\":{\"Term\":6,\"Index\":48,\"Commands\":[{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"0319ec31-c92e-4e3e-a4c5-681974ed6d79\",\"Status\":5,\"CompletedOn\":\"0001-01-01T00:00:00\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"49\":{\"Term\":6,\"Index\":49,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"InsyncAllocationsToAdd\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"StaleAllocationsToRemove\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"0319ec31-c92e-4e3e-a4c5-681974ed6d79\",\"Status\":1,\"CompletedOn\":\"2020-01-12T14:03:57.3013951Z\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"50\":{\"Term\":6,\"Index\":50,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"LatestPos\":226,\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null}]},\"51\":{\"Term\":6,\"Index\":51,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"StaleAllocationsToAdd\":[\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null}]},\"52\":{\"Term\":7,\"Index\":52,\"Commands\":[{\"Id\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Name\":\"\",\"TransportAddress\":\"https:\\/\\/localhost:5022\",\"IsContactable\":true,\"CommandName\":\"UpsertNodeInformation\",\"DebugLog\":null}]},\"53\":{\"Term\":7,\"Index\":53,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"LatestPos\":252,\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"b7aac0f6-f5c5-4369-8d35-dda93ab5c8e3\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Description\":null,\"NodeId\":\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:04:13.8323067Z\",\"CompletedOn\":\"2020-01-12T14:04:26.7999775Z\",\"ErrorMessage\":null},{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"d1332e8c-ff4a-475f-80e1-7d69673d21fb\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:04:13.8324568Z\",\"CompletedOn\":\"2020-01-12T14:04:16.0778643Z\",\"ErrorMessage\":null},{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"f25c9baf-557b-4e4b-b392-7c002d46265e\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Description\":null,\"NodeId\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Status\":1,\"CreatedOn\":\"2020-01-12T14:04:13.8325267Z\",\"CompletedOn\":\"2020-01-12T14:04:25.788778Z\",\"ErrorMessage\":null}],\"TasksToRemove\":null,\"TasksToUpdate\":null,\"DebugLog\":null}]},\"54\":{\"Term\":7,\"Index\":54,\"Commands\":[{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"d1332e8c-ff4a-475f-80e1-7d69673d21fb\",\"Status\":5,\"CompletedOn\":\"0001-01-01T00:00:00\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"55\":{\"Term\":7,\"Index\":55,\"Commands\":[{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"b7aac0f6-f5c5-4369-8d35-dda93ab5c8e3\",\"Status\":5,\"CompletedOn\":\"0001-01-01T00:00:00\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"56\":{\"Term\":7,\"Index\":56,\"Commands\":[{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"f25c9baf-557b-4e4b-b392-7c002d46265e\",\"Status\":5,\"CompletedOn\":\"0001-01-01T00:00:00\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"57\":{\"Term\":7,\"Index\":57,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"InsyncAllocationsToAdd\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"StaleAllocationsToRemove\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"d1332e8c-ff4a-475f-80e1-7d69673d21fb\",\"Status\":1,\"CompletedOn\":\"2020-01-12T14:04:16.0778643Z\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"58\":{\"Term\":7,\"Index\":58,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"StaleAllocationsToAdd\":[\"e3cde308-24ea-41cf-9992-30c5bc200b1c\",\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null}]},\"59\":{\"Term\":8,\"Index\":59,\"Commands\":[{\"Id\":\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\",\"Name\":\"\",\"TransportAddress\":\"https:\\/\\/localhost:5022\",\"IsContactable\":true,\"CommandName\":\"UpsertNodeInformation\",\"DebugLog\":null}]},\"60\":{\"Term\":8,\"Index\":60,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"LatestPos\":274,\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"Name\":\"ResyncShard\",\"Id\":\"5b2cc49a-08d7-49a3-aef9-581a394b74bd\",\"UniqueRunningId\":\"Recover_Shard_ef2209ec-ee65-49f2-9a81-4f20f1dda447_95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Description\":null,\"NodeId\":\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\",\"Status\":0,\"CreatedOn\":\"2020-01-12T14:04:23.319406Z\",\"CompletedOn\":null,\"ErrorMessage\":null}],\"TasksToRemove\":null,\"TasksToUpdate\":null,\"DebugLog\":null}]},\"61\":{\"Term\":8,\"Index\":61,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"InsyncAllocationsToAdd\":[\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\"],\"StaleAllocationsToRemove\":[\"8d3ee6ca-8da9-41c4-a4e5-8b7803f39bc4\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"f25c9baf-557b-4e4b-b392-7c002d46265e\",\"Status\":1,\"CompletedOn\":\"2020-01-12T14:04:25.788778Z\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"62\":{\"Term\":8,\"Index\":62,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"InsyncAllocationsToAdd\":[\"e3cde308-24ea-41cf-9992-30c5bc200b1c\"],\"StaleAllocationsToRemove\":[\"e3cde308-24ea-41cf-9992-30c5bc200b1c\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null},{\"CommandName\":\"UpdateClusterTasks\",\"TasksToAdd\":null,\"TasksToRemove\":null,\"TasksToUpdate\":[{\"TaskId\":\"b7aac0f6-f5c5-4369-8d35-dda93ab5c8e3\",\"Status\":1,\"CompletedOn\":\"2020-01-12T14:04:26.7999775Z\",\"ErrorMessage\":null}],\"DebugLog\":null}]},\"63\":{\"Term\":8,\"Index\":63,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"LatestPos\":275,\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null}]},\"64\":{\"Term\":8,\"Index\":64,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"InsyncAllocationsToRemove\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"StaleAllocationsToAdd\":[\"95ae4a5b-20eb-47fb-ba99-96115e3dacab\"],\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null}]},\"65\":{\"Term\":8,\"Index\":65,\"Commands\":[{\"ShardId\":\"ef2209ec-ee65-49f2-9a81-4f20f1dda447\",\"Type\":\"number\",\"LatestPos\":276,\"CommandName\":\"UpdateShardMetadataAllocations\",\"DebugLog\":null}]}}");
     provider.GetService <INodeStorage <TestState> >().LastSnapshotIncludedIndex = 44;
     Node = provider.GetService <IClusterRequestHandler>();
     provider.GetService <NodeStateService>().CommitIndex = 65;
 }
コード例 #5
0
 public AppendStepLogCommandHandler(IEntitiesRepository entitiesRepository,
                                    ILogger <AppendStepLogCommandHandler> logger,
                                    IClusterRequestHandler node
                                    )
 {
     _entitiesRepository = entitiesRepository;
     Logger = logger;
     _node  = node;
 }
コード例 #6
0
 public UpdateExecutionScheduleCommandHandler(IEntitiesRepository entitiesRepository,
                                              IClusterStateService service,
                                              IClusterRequestHandler node,
                                              IMediator mediator)
 {
     _entitiesRepository  = entitiesRepository;
     _clusterStateService = service;
     _node     = node;
     _mediator = mediator;
 }
コード例 #7
0
 public CreateUserCommandHandler(
     IEntitiesRepository entitiesRepository,
     ILogger <CreateUserCommandHandler> logger,
     IServiceProvider prov,
     IDataRouter router,
     IClusterRequestHandler node
     )
 {
     _entitiesRepository = entitiesRepository;
     _node = (IClusterRequestHandler)prov.GetService(typeof(IClusterRequestHandler));
 }
コード例 #8
0
 public CreateWorkflowCommandHandler(
     IEntitiesRepository entitiesRepository,
     IMediator mediator,
     IClusterRequestHandler node,
     ILogger <CreateWorkflowCommandHandler> logger)
 {
     _entitiesRepository = entitiesRepository;
     _mediator           = mediator;
     _node   = node;
     _logger = logger;
 }
コード例 #9
0
        public MetricManagementService(
            ILogger <MetricManagementService> logger,
            IClusterRequestHandler node,
            NodeStateService nodeStateService,
            IEntitiesRepository entitiesRepository,
            IConfiguration configuration
            )
        {
            _logger = logger;
            _logger.LogInformation("Populating Metrics...");
            _metricLibrary      = new MetricLibrary();
            _node               = node;
            _nodeStateService   = nodeStateService;
            _entitiesRepository = entitiesRepository;
            _configuration      = configuration;
            EnableMetrics       = _configuration.GetValue <bool>("EnableMonitoring");
            if (EnableMetrics)
            {
                writeThread = new Task(async() =>
                {
                    MetricTick tick;
                    while (true)
                    {
                        // Console.WriteLine("Number of tasks " + _ticks.Count());
                        if (_nodeStateService.InCluster)
                        {
                            if (_ticks.TryDequeue(out tick))
                            {
                                tick.Date     = tick.Date.ToUniversalTime();
                                tick.Id       = Guid.NewGuid();
                                var startTime = DateTime.Now;
                                await _node.Handle(new AddShardWriteOperation()
                                {
                                    WaitForSafeWrite = true,
                                    Operation        = ConsensusCore.Domain.Enums.ShardOperationOptions.Create,
                                    Data             = tick,
                                    Metric           = false // Do not metric the metric write operations
                                });
                                _logger.LogDebug("Total write time took " + (DateTime.Now - startTime).TotalMilliseconds + " total ticks left in queue " + _ticks.Count());

                                if (_ticks.Count > 100)
                                {
                                    _logger.LogWarning("Tick count is greater then 100...");
                                }
                            }
                        }
                        await Task.Delay(10);
                    }
                });

                writeThread.Start();
            }
        }
コード例 #10
0
 public UnassignStepCommandHandler(IEntitiesRepository entitiesRepository,
                                   ILogger <UnassignStepCommandHandler> logger,
                                   IOptionsMonitor <CindiClusterOptions> options,
                                   IClusterRequestHandler node)
 {
     _entitiesRepository = entitiesRepository;
     _node  = node;
     Logger = logger;
     options.OnChange((change) =>
     {
         _option = change;
     });
 }
コード例 #11
0
 public AssignStepCommandHandler(
     IEntitiesRepository entitiesRepository,
     IClusterStateService stateService,
     ILogger <AssignStepCommandHandler> logger,
     IClusterRequestHandler node,
     IMemoryCache cache
     )
 {
     _entitiesRepository  = entitiesRepository;
     _clusterStateService = stateService;
     Logger = logger;
     _node  = node;
     _cache = cache;
 }
コード例 #12
0
 public NodeController(IClusterRequestHandler handler,
                       ILogger <NodeController <State> > logger,
                       NodeStateService nodeStateService,
                       IStateMachine <State> stateMachine,
                       INodeStorage <State> nodeStorage,
                       IClusterConnectionPool clusterConnectionPool,
                       IShardRepository shardRepository)
 {
     _handler               = handler;
     Logger                 = logger;
     _nodeStateService      = nodeStateService;
     _stateMachine          = stateMachine;
     _nodeStorage           = nodeStorage;
     _clusterConnectionPool = clusterConnectionPool;
     _shardRepository       = shardRepository;
 }
コード例 #13
0
 public CompleteStepCommandHandler(IEntitiesRepository entitiesRepository,
                                   IClusterStateService clusterStateService,
                                   ILogger <CompleteStepCommandHandler> logger,
                                   CindiClusterOptions options,
                                   IMediator mediator,
                                   IClusterRequestHandler node,
                                   NodeStateService nodeStateService
                                   )
 {
     _entitiesRepository  = entitiesRepository;
     _clusterStateService = clusterStateService;
     Logger    = logger;
     _option   = options;
     _node     = node;
     _mediator = mediator;
 }
コード例 #14
0
 public ScanWorkflowCommandHandler(IEntitiesRepository entitiesRepository,
                                   IClusterStateService clusterStateService,
                                   ILogger <ScanWorkflowCommandHandler> logger,
                                   IOptionsMonitor <CindiClusterOptions> options,
                                   IMediator mediator,
                                   IClusterRequestHandler node
                                   )
 {
     _entitiesRepository  = entitiesRepository;
     _clusterStateService = clusterStateService;
     Logger  = logger;
     _option = options.CurrentValue;
     options.OnChange((change) =>
     {
         _option = change;
     });
     _mediator = mediator;
     _node     = node;
 }
コード例 #15
0
        public ClusterStateService(
            ILogger <ClusterStateService> logger,
            IServiceScopeFactory serviceProvider,
            IClusterRequestHandler node,
            IStateMachine <CindiClusterState> stateMachine)
        {
            _node         = node;
            _stateMachine = stateMachine;
            Initialized   = state == null ? false : state.Initialized;

            _logger = logger;
            if (state == null)
            {
                _logger.LogWarning("Existing cluster state not found. Creating new state.");
            }
            else
            {
                Console.WriteLine("Existing cluster state found with name " + state.Id + ". Loading existing state.");
            }
        }
コード例 #16
0
 public CreateStepTemplateCommandHandler(IEntitiesRepository entitiesRepository, IClusterRequestHandler node, ILogger <CreateStepTemplateCommandHandler> logger)
 {
     _entitiesRepository = entitiesRepository;
     _node  = node;
     Logger = logger;
 }
コード例 #17
0
 public DeleteEntityCommandHandler(IClusterRequestHandler node, IEntitiesRepository entitiesRepository)
 {
     _node = node;
     _entitiesRepository = entitiesRepository;
 }
コード例 #18
0
 public UpdateClusterStateCommandHandler(IClusterRequestHandler node, IClusterStateService state)
 {
     _state = state;
     _node  = node;
 }
コード例 #19
0
 public CreateGlobalValueCommandHandler(IEntitiesRepository entitiesRepository, IClusterRequestHandler node)
 {
     _entitiesRepository = entitiesRepository;
     _node = node;
 }
コード例 #20
0
 public UpdateNonceCommandHandler(IMediator mediator, IClusterRequestHandler node)
 {
     _mediator = mediator;
     _node     = node;
 }
コード例 #21
0
 public DataConcurrency_Tests()
 {
     Node = TestUtility.GetFullNodeProvider().GetService <IClusterRequestHandler>();
 }
コード例 #22
0
 public CreateBotKeyCommandHandler(IClusterRequestHandler node)
 {
     _node = node;
 }
コード例 #23
0
 public UpdateBotKeyCommandHandler(IEntitiesRepository entitiesRepository, IClusterRequestHandler node)
 {
     _entitiesRepository = entitiesRepository;
     _node = node;
 }