Beispiel #1
0
        private static DeploymentServerState CreateState(IActorRefFactory context, ISharpRepositoryConfiguration configuration, IDirectory fileSystem, DataTransferManager manager,
                                                         RepositoryApi repositoryApi)
        {
            var changeTracker = context.ActorOf("Change-Tracker", ChangeTrackerActor.New());

            var trashBin = configuration.GetInstance <ToDeleteRevision, string>(CleanUpManager.RepositoryKey);

            var cleanUp = context.ActorOf("CleanUp-Manager", CleanUpManager.New(configuration, fileSystem));

            cleanUp.Tell(CleanUpManager.Initialization);

            var router = new SmallestMailboxPool(Environment.ProcessorCount)
                         .WithSupervisorStrategy(SupervisorStrategy.DefaultStrategy);

            var queryProps = Feature.Props(AppQueryHandler.New(configuration.GetInstance <AppData, string>(), fileSystem, manager, changeTracker))
                             .WithRouter(router);
            var query = context.ActorOf(queryProps, "QueryRouter");

            var buildSystem = WorkDistributorFeature <BuildRequest, BuildCompled>
                              .Create(context, Props.Create(() => new BuildingActor(manager)), "Compiler", TimeSpan.FromHours(1), "CompilerSupervisor");

            var processorProps = Feature.Props(AppCommandProcessor.New(configuration.GetInstance <AppData, string>(), fileSystem, repositoryApi, manager, trashBin, buildSystem, changeTracker))
                                 .WithRouter(router);
            var processor = context.ActorOf(processorProps, "ProcessorRouter");

            return(new DeploymentServerState(query, processor));
        }
        private void StartScanners()
        {
            var props = new SmallestMailboxPool(10).Props(
                Context.DI().Props <ProjectInfoScanActor>());

            props.WithSupervisorStrategy(new OneForOneStrategy(2, 20, e => Directive.Restart));
            _scanners = Context.ActorOf(props, "scanner_worker");
        }
Beispiel #3
0
 private IEnumerable <IActorRef> CreateNotificationsPools(IEnumerable <Props> notificationsActorsProps)
 {
     return(notificationsActorsProps.Select(props =>
     {
         var pool = new SmallestMailboxPool(NotificationsActorsPoolSize);
         var notificationsPoolProps = props.WithRouter(pool);
         return Context.ActorOf(notificationsPoolProps);
     }));
 }
        public override IActorRef Build(IUntypedActorContext context, string name)
        {
            var router = new SmallestMailboxPool(_serviceSettings.NrOfTransactionMonitors);

            return(context.ActorOf
                   (
                       context.DI().Props <TransactionMonitorActor>().WithRouter(router),
                       name
                   ));
        }
        public void CanSerializeSmallestMailboxPool()
        {
            var decider = Decider.From(
             Directive.Restart,
             Directive.Stop.When<ArgumentException>(),
             Directive.Stop.When<NullReferenceException>());

            var supervisor = new OneForOneStrategy(decider);

            var message = new SmallestMailboxPool(10, null, supervisor, "abc");
            AssertEqual(message);
        }
            public Props Configurate(Props mutator)
            {
                var route = new SmallestMailboxPool(_instances)
                            .WithSupervisorStrategy(_supervisorStrategy);

                if (_resizer == null)
                {
                    route = route.WithResizer(_resizer);
                }
                if (!string.IsNullOrWhiteSpace(_dispatcher))
                {
                    route = route.WithDispatcher(_dispatcher);
                }

                mutator = mutator.WithRouter(route);
                return(_custom != null?_custom(mutator) : mutator);
            }
        public DeploymentServerImpl(IMongoClient client, DataTransferManager dataTransfer, RepositoryApi repositoryProxy)
        {
            var changeTracker = Context.ActorOf <ChangeTrackerActor>();

            var database = client.GetDatabase("Deployment");
            var trashBin = database.GetCollection <ToDeleteRevision>("TrashBin");
            var files    = new GridFSBucket(database, new GridFSBucketOptions {
                BucketName = "Apps"
            });

            var cleanUp = Context.ActorOf(() => new CleanUpManager(database, "CleanUp", trashBin, files), "CleanUp-Manager");

            cleanUp.Tell(CleanUpManager.Initialization);

            var router = new SmallestMailboxPool(Environment.ProcessorCount)
                         .WithSupervisorStrategy(Akka.Actor.SupervisorStrategy.DefaultStrategy);

            var queryProps = Props.Create(() => new AppQueryHandler(database.GetCollection <AppData>(AppsCollectionName, null), files, dataTransfer, changeTracker))
                             .WithRouter(router);
            var query = Context.ActorOf(queryProps, "QueryRouter");

            Receive <IDeploymentQuery>(q => query.Forward(q));

            var buildSystem = WorkDistributor <BuildRequest, BuildCompled> .Create(Context, Props.Create(() => new BuildingActor(dataTransfer)), "Compiler", TimeSpan.FromHours(1), "CompilerSupervisor");

            var processorProps = Props.Create(() => new AppCommandProcessor(database.GetCollection <AppData>(AppsCollectionName, null), files, repositoryProxy, dataTransfer, trashBin, buildSystem, changeTracker))
                                 .WithRouter(router);
            var processor = Context.ActorOf(processorProps, "ProcessorRouter");

            Receive <IDeploymentCommand>(a => processor.Forward(a));

            Receive <string>(s =>
            {
                try
                {
                    database.GetCollection <AppData>(AppsCollectionName).Indexes.CreateOne(new CreateIndexModel <AppData>(Builders <AppData> .IndexKeys.Ascending(ad => ad.Name)));
                }
                catch (Exception e)
                {
                    Log.Error(e, "Error on Creating Index for Data");
                }
            });
        }
        public void CanSerializeSmallestMailboxPool()
        {
            var message = new SmallestMailboxPool(10);

            AssertEqual(message);
        }