public PolicyProvider( ILoggerFactory factory, IIdentityProvider identityProvider, IPeersProvider peersProvider, DataManager dataManager) { _logger = factory.CreateLogger <PolicyProvider>(); _dataManager = dataManager; _identityProvider = identityProvider; _peersprovider = peersProvider; }
public FollowerTests() { _rules = new Rules(); _settings = new InMemorySettingsBuilder().Build(); _random = new RandomDelay(); _log = new InMemoryLog(); _peers = new List <IPeer>(); _fsm = new InMemoryStateMachine(); _peersProvider = new InMemoryPeersProvider(_peers); _currentState = new CurrentState(Guid.NewGuid().ToString(), 0, default(string), -1, -1, default(string)); }
public ConfigProvider( IAssemblyProvider assemblyProvider, IPolicyProvider policyProvider, IIdentityProvider identityProvider, IPeersProvider peersProvider, MQSetting mQSetting) { _settings = new InMemorySettings(); _assemblyProvider = assemblyProvider; _identityProvider = identityProvider; _policyProvider = policyProvider; _peersProvider = peersProvider; _mQSetting = mQSetting; }
public FollowerTests() { _logger = new Mock <ILogger>(); _loggerFactory = new Mock <ILoggerFactory>(); _loggerFactory.Setup(x => x.CreateLogger(It.IsAny <string>())).Returns(_logger.Object); _rules = new Rules(_loggerFactory.Object, new NodeId(default(string))); _settings = new InMemorySettingsBuilder().Build(); _random = new RandomDelay(); _log = new InMemoryLog(); _peers = new List <IPeer>(); _fsm = new InMemoryStateMachine(); _peersProvider = new InMemoryPeersProvider(_peers); _currentState = new CurrentState(Guid.NewGuid().ToString(), 0, default(string), -1, -1, default(string)); _node = new NothingNode(); }
public Node( IFiniteStateMachine fsm, ILog log, ISettings settings, IPeersProvider peersProvider) { //dont think rules should be injected at the moment..EEK UNCLE BOB _rules = new Rules(); _fsm = fsm; _log = log; _random = new RandomDelay(); _settings = settings; _peersProvider = peersProvider; _getPeers = state => { var peers = _peersProvider.Get(); var peersThatAreNotThisServer = peers.Where(p => p?.Id != state.Id).ToList(); return(peersThatAreNotThisServer); }; }
public Node( IFiniteStateMachine fsm, ILog log, ISettings settings, IPeersProvider peersProvider, ILoggerFactory loggerFactory) { _loggerFactory = loggerFactory; _logger = _loggerFactory.CreateLogger <Node>(); _fsm = fsm; _log = log; _random = new RandomDelay(); _settings = settings; _peersProvider = peersProvider; _getPeers = state => { var peers = _peersProvider.Get(); var peersThatAreNotThisServer = peers.Where(p => p?.Id != state.Id).ToList(); return(peersThatAreNotThisServer); }; }
/// <summary> /// Open opens the store. If enableSingle is set, and there are no existing peers, /// then this node becomes the first node, and therefore leader, of the cluster. /// </summary> /// <param name="enableSingle"></param> public void Open(bool enableSingle) { lock (closedMu) { if (closed) { throw new StoreInvalidStateException(); } logger.LogInformation($"opening store with node ID {ID}"); logger.LogInformation($"ensuring directory at {Path} exists"); var di = Directory.CreateDirectory(Path); //di.GetAccessControl().SetAccessRule(new FileSystemAccessRule()) //TODO: Set perms to 0755 // Create underlying database. createDatabase(); // Get utility connection to database. dbConn = db.Connect(); conns.Add(defaultConnID, new StoreConnection(dbConn, this, defaultConnID, TimeSpan.Zero, TimeSpan.Zero)); // Is this a brand new node? var raftLogDbPath = System.IO.Path.Combine(Path, "raft.db"); var newNode = !File.Exists(raftLogDbPath); raftLog = new Raft.SQLiteLog(raftLogDbPath, new NodeId(ID), Logging.LoggerFactory); /* * // Create Raft-compatible network layer. * raftTn = raft.NewNetworkTransport(NewTransport(ln), * connectionPoolCount, connectionTimeout, nil); * * // Get the Raft configuration for this store. * var config = raftConfig(); * * config.LocalID = raft.ServerID(s.raftID); * * config.Logger = log.New(os.Stderr, "[raft] ", log.LstdFlags); * * // Create the snapshot store. This allows Raft to truncate the log. * snapshots, err:= raft.NewFileSnapshotStore(s.raftDir, retainSnapshotCount, os.Stderr) * * if err != nil { * return fmt.Errorf("file snapshot store: %s", err) * * } * * // Create the log store and stable store. * s.boltStore, err = raftboltdb.NewBoltStore(filepath.Join(s.raftDir, "raft.db")) * * if err != nil { * return fmt.Errorf("new bolt store: %s", err) * * } * s.raftStable = s.boltStore * * s.raftLog, err = raft.NewLogCache(raftLogCacheSize, s.boltStore) * * if err != nil { * return fmt.Errorf("new cached store: %s", err) * * } */ raftPeers = new PeersProvider(); // Instantiate the Raft system. raft = new Node(this, raftLog, raftSettings, raftPeers, Logging.LoggerFactory); // ra, err:= raft.NewRaft(config, s, s.raftLog, s.raftStable, snapshots, s.raftTn) // if err != nil { // return fmt.Errorf("new raft: %s", err) // } /* * * if enableSingle && newNode { * s.logger.Printf("bootstrap needed") * * * configuration:= raft.Configuration{ * Servers: []raft.Server{ * { * ID: config.LocalID, * Address: raftTn.LocalAddr(), * }, * }, * } * ra.BootstrapCluster(configuration) * * * } * else * { * logger.Printf("no bootstrap needed") * * * } * * raft = ra */ // Start connection monitoring checkConnections(); } }