Exemplo n.º 1
0
        private void CancelJobByJobIdWorker(Guid jobId)
        {
            try
            {
                using (var sqlConnection = new SqlConnection(_connectionString))
                {
                    sqlConnection.OpenWithRetry(_retryPolicy);
                    using (var sqlTransaction = sqlConnection.BeginTransaction())
                    {
                        var sentToWorkerNodeUri = _jobRepositoryCommandExecuter.SelectWorkerNode(jobId, sqlConnection, sqlTransaction);
                        if (sentToWorkerNodeUri == null)
                        {
                            return;
                        }

                        var builderHelper = new NodeUriBuilderHelper(sentToWorkerNodeUri);
                        var uriCancel     = builderHelper.GetCancelJobUri(jobId);
                        var response      = _httpSender.DeleteAsync(uriCancel).Result;

                        if (response != null && response.IsSuccessStatusCode)
                        {
                            _jobRepositoryCommandExecuter.UpdateResult(jobId, "Canceled", DateTime.UtcNow, sqlConnection, sqlTransaction);
                            _jobRepositoryCommandExecuter.DeleteJobFromJobQueue(jobId, sqlConnection, sqlTransaction);

                            sqlTransaction.Commit();
                        }
                        else
                        {
                            this.Log().ErrorWithLineNumber("Could not send cancel to node. JobId: " + jobId);
                        }
                    }
                }
            }
            catch (Exception exp)
            {
                this.Log().ErrorWithLineNumber(exp.Message, exp);
                throw;
            }
        }
        public void ShouldReturnCorrectCancelJobUri()
        {
            NodeUriBuilderHelperToTest = new NodeUriBuilderHelper(UriToTest);

            Assert.IsTrue(NodeUriBuilderHelperToTest.GetCancelJobUri(Guid) == CancelJobUri);
        }