Exemplo n.º 1
0
        /// <summary>
        /// Cancel a job.
        /// </summary>
        /// <param name="jobs">Jobs to cancel.</param>
        /// <param name="cluster">Cluster where the jobs are running.</param>
        /// <returns>True if all cancellations succeed.</returns>
        /// <param name="manager">Communicatoni manager.</param>
        // ReSharper disable once UnusedParameter.Global
        public static bool CancelJobs(IEnumerable<DryadLinqJobSummary> jobs, ClusterStatus cluster, CommManager manager)
        {
            bool done = true;
            foreach (DryadLinqJobSummary job in jobs)
            {
                manager.Token.ThrowIfCancellationRequested();
                if (job.Status != ClusterJobInformation.ClusterJobStatus.Running)
                {
                    manager.Status("Job " + job.Name + " does not appear to be running; will still try to cancel", StatusKind.Error);
                }

                bool success;
                string reason = "";
                try
                {
                    success = cluster.CancelJob(job);
                }
                catch (Exception ex)
                {
                    success = false;
                    reason = ex.Message;
                    Trace.TraceInformation(ex.ToString());
                }

                if (success)
                    manager.Status("Job " + job.Name + " cancelled", StatusKind.OK);
                else
                    manager.Status("Cancellation of " + job.Name + " failed " + reason, StatusKind.Error);
                done &= success;
            }
            return done;
        }