internal DeactivateContainerOperation( ContainerActivatorService activator, ContainerDeactivationArgs deactivationArgs, TimeSpan timeout) { this.activator = activator; this.deactivationArgs = deactivationArgs; this.timeout = timeout; this.timeoutHelper = new TimeoutHelper(timeout); this.maxRetryCount = HostingConfig.Config.ContainerTerminationMaxRetryCount; this.retryDelay = TimeSpan.FromSeconds(HostingConfig.Config.ContainerDeactivationRetryDelayInSec); this.deactivationTimeout = HostingConfig.Config.ContainerDeactivationTimeout; this.retryCount = 0; }
internal static async Task CleanupOnErrorAsync( string traceType, bool autoRemove, bool isContainerRoot, string cgroupName, string containerName, string applicationId, IContainerActivatorService activatorService, TimeoutHelper timeoutHelper, FabricException originalEx) { HostingTrace.Source.WriteWarning( traceType, "CleanupOnErrorAsync(): Deactivating Container='{0}', AppId={1}.", containerName, applicationId); try { var deactivationArg = new ContainerDeactivationArgs() { ContainerName = containerName, ConfiguredForAutoRemove = autoRemove, IsContainerRoot = isContainerRoot, CgroupName = cgroupName, IsGracefulDeactivation = false }; await Utility.ExecuteWithRetryOnTimeoutAsync( (operationTimeout) => { return(activatorService.DeactivateContainerAsync( deactivationArg, operationTimeout)); }, $"CleanupOnErrorAsync_DeactivateContainerAsync_{containerName}", traceType, HostingConfig.Config.DockerRequestTimeout, timeoutHelper.RemainingTime); } catch (FabricException) { // Ignore. } throw originalEx; }
internal DeactivateContainerOperation( ContainerActivatorService activator, ContainerDeactivationArgs deactivationArgs, TimeSpan timeout) { this.activator = activator; this.deactivationArgs = deactivationArgs; // // NonGracefulDeactivation (i.e. abort request) should never timeout. // this.timeout = deactivationArgs.IsGracefulDeactivation ? timeout : TimeSpan.MaxValue; this.timeoutHelper = new TimeoutHelper(timeout); this.retryDelay = TimeSpan.FromSeconds(HostingConfig.Config.ContainerDeactivationRetryDelayInSec); this.deactivationTimeout = HostingConfig.Config.ContainerDeactivationTimeout; this.retryCount = 0; }
private async Task CleanupOnErrorAsync(FabricException originalEx) { HostingTrace.Source.WriteWarning( TraceType, "CleanupOnErrorAsync(): Deactivating {0}", BuildContainerInfoMessage()); try { var deactivationArg = new ContainerDeactivationArgs() { ContainerName = this.activationArgs.ContainerDescription.ContainerName, ConfiguredForAutoRemove = this.activationArgs.ContainerDescription.AutoRemove, IsContainerRoot = this.activationArgs.ContainerDescription.IsContainerRoot, CgroupName = this.activationArgs.ProcessDescription.CgroupName, IsGracefulDeactivation = false }; await Utility.ExecuteWithRetriesAsync( (operationTimeout) => { return(this.activator.DeactivateContainerAsync( deactivationArg, operationTimeout)); }, $"CleanupOnErrorAsync_DeactivateContainerAsync_{this.ContainerName}", TraceType, HostingConfig.Config.DockerRequestTimeout, this.timeoutHelper.RemainingTime); } catch (FabricException) { // Ignore. } throw originalEx; }
public Task DeactivateContainerAsync(ContainerDeactivationArgs deactivationArgs, TimeSpan timeout) { var operation = new DeactivateContainerOperation(this, deactivationArgs, timeout); return(operation.ExecuteAsync()); }