Exemple #1
0
        private Task <(long Index, object Result)> UpdateTopology(UpdateTopologyCommand cmd)
        {
            if (_engine.LeaderTag != _server.NodeTag)
            {
                throw new NotLeadingException("This node is no longer the leader, so we abort updating the database topology");
            }

            return(_engine.PutAsync(cmd));
        }
Exemple #2
0
        protected async Task <long> IssueCommandsAndWaitForCommit(RachisConsensus <CountingStateMachine> leader, int numberOfCommands, string name, int value)
        {
            Assert.True(leader.CurrentState == RachisState.Leader || leader.CurrentState == RachisState.LeaderElect, "Can't append commands from non leader");
            using (leader.ContextPool.AllocateOperationContext(out TransactionOperationContext context))
            {
                for (var i = 0; i < 3; i++)
                {
                    await leader.PutAsync(new TestCommand { Name = name, Value = value });
                }

                using (context.OpenReadTransaction())
                    return(leader.GetLastEntryIndex(context));
            }
        }
Exemple #3
0
        protected List <Task> IssueCommandsWithoutWaitingForCommits(RachisConsensus <CountingStateMachine> leader, int numberOfCommands, string name, int value)
        {
            List <Task> waitingList = new List <Task>();

            for (var i = 0; i < numberOfCommands; i++)
            {
                var task = leader.PutAsync(new TestCommand
                {
                    Name  = name,
                    Value = value
                });

                waitingList.Add(task);
            }
            return(waitingList);
        }
Exemple #4
0
        protected List <Task> IssueCommandsWithoutWaitingForCommits(RachisConsensus <CountingStateMachine> leader, int numberOfCommands, string name, int value)
        {
            Assert.True(leader.CurrentState == RachisState.Leader, "Can't append commands from non leader");
            List <Task> waitingList = new List <Task>();

            using (leader.ContextPool.AllocateOperationContext(out TransactionOperationContext context))
            {
                for (var i = 0; i < 3; i++)
                {
                    waitingList.Add(leader.PutAsync(new TestCommand {
                        Name = name, Value = value
                    }));
                }
            }
            return(waitingList);
        }