private async Task <RunResultMessage> ProcessInternalAsync(CreateAlgorithmMessage request) { _logger.LogInformation("Processing message - Run Id: " + request.Run.Id); using (_container.OpenScope()) { using (var uow = _unitOfWorkProvider.Create(DbContextOptions.DisableTransactionMode)) { uow.Context.Runs.Attach(request.Run); var result = await _launchService.LaunchAsync(request.Algorithm, request.Run, new RunSettings { Arguments = request.Arguments, Timeout = request.Timeout }); return(new RunResultMessage() { StdOut = result.StdOut, StdErr = result.StdErr, CreatedAt = result.CreatedAt, FinishedAt = result.FinishedAt, FileId = result.FileId, Result = result.Result, RunId = result.RunId }); } } }
private async Task <RunResult> CreateRunAndLaunch(Algorithm algorithm, List <Argument> args, int?timeout = null) { using (var uow = UnitOfWorkProvider.Create(DbContextOptions.DisableTransactionMode)) { var run = new Run() { AlgorithmId = algorithm.Id, UserId = CurrentUserProvider.Id, Result = RunResultType.NotFinished }; _runRepository.Insert(run); await uow.CommitAsync(); var runSettings = new RunSettings { Arguments = args, Timeout = timeout }; return(await _launchService.LaunchAsync(algorithm, run, runSettings)); } }