Esempio n. 1
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;
        }
        private void RegisterContainerActivatorServiceHelper(IContainerActivatorService service)
        {
            var broker = new ContainerActivatorServiceBroker(service);

            this.nativeManager.RegisterContainerActivatorService(broker);
        }
 public void RegisterContainerActivatorService(IContainerActivatorService service)
 {
     Utility.WrapNativeSyncInvokeInMTA(
         () => this.RegisterContainerActivatorServiceHelper(service),
         "FabricContainerActivatorServiceAgent.RegisterContainerActivatorService");
 }
 internal ContainerActivatorServiceBroker(IContainerActivatorService activator)
 {
     this.activatorService = activator;
 }