func (engine *DockerStatsEngine) addContainerUnsafe(dockerID string) (*StatsContainer, error) {
	// Make sure that this container belongs to a task and that the task
	// is not terminal.
	task, err := engine.resolver.ResolveTask(dockerID)
	if err != nil {
		return nil, errors.Wrapf(err, "could not map container to task, ignoring container: %s", dockerID)
	}

	if len(task.Arn) == 0 || len(task.Family) == 0 {
		return nil, errors.Errorf("stats add container: invalid task fields, arn: %s, familiy: %s", task.Arn, task.Family)
	}

	if task.GetKnownStatus().Terminal() {
		return nil, errors.Errorf("stats add container: task is terminal, ignoring container: %s, task: %s", dockerID, task.Arn)
	}

	seelog.Debugf("Adding container to stats watch list, id: %s, task: %s", dockerID, task.Arn)
	statsContainer := newStatsContainer(dockerID, engine.client, engine.resolver)
	engine.tasksToDefinitions[task.Arn] = &taskDefinition{family: task.Family, version: task.Version}

	watchStatsContainer := false
	if !engine.disableMetrics {
		// Adding container to the map for collecting stats
		watchStatsContainer = engine.addToStatsContainerMapUnsafe(task.Arn, dockerID, statsContainer, engine.containerMetricsMapUnsafe)
	}

	if dockerContainer, err := engine.resolver.ResolveContainer(dockerID); err != nil {
		seelog.Debugf("Could not map container ID to container, container: %s, err: %s", dockerID, err)
	} else if dockerContainer.Container.HealthStatusShouldBeReported() {
		// Track the container health status
		engine.addToStatsContainerMapUnsafe(task.Arn, dockerID, statsContainer, engine.healthCheckContainerMapUnsafe)
		seelog.Debugf("Adding container to stats health check watch list, id: %s, task: %s", dockerID, task.Arn)
	}

	if !watchStatsContainer {
		return nil, nil
	}
	return statsContainer, nil
}
func (engine *DockerStatsEngine) addContainerUnsafe(dockerID string) (*StatsContainer, error) {
	
	
	task, err := engine.resolver.ResolveTask(dockerID)
	if err != nil {
		return nil, errors.Wrapf(err, "could not map container to task, ignoring container: %s", dockerID)
	}

	if len(task.Arn) == 0 || len(task.Family) == 0 {
		return nil, errors.Errorf("stats add container: invalid task fields, arn: %s, familiy: %s", task.Arn, task.Family)
	}

	if task.GetKnownStatus().Terminal() {
		return nil, errors.Errorf("stats add container: task is terminal, ignoring container: %s, task: %s", dockerID, task.Arn)
	}

	seelog.Debugf("Adding container to stats watch list, id: %s, task: %s", dockerID, task.Arn)
	statsContainer := newStatsContainer(dockerID, engine.client, engine.resolver)
	engine.tasksToDefinitions[task.Arn] = &taskDefinition{family: task.Family, version: task.Version}

	watchStatsContainer := false
	if !engine.disableMetrics {
		
		watchStatsContainer = engine.addToStatsContainerMapUnsafe(task.Arn, dockerID, statsContainer, engine.containerMetricsMapUnsafe)
	}

	if dockerContainer, err := engine.resolver.ResolveContainer(dockerID); err != nil {
		seelog.Debugf("Could not map container ID to container, container: %s, err: %s", dockerID, err)
	} else if dockerContainer.Container.HealthStatusShouldBeReported() {
		
		engine.addToStatsContainerMapUnsafe(task.Arn, dockerID, statsContainer, engine.healthCheckContainerMapUnsafe)
		seelog.Debugf("Adding container to stats health check watch list, id: %s, task: %s", dockerID, task.Arn)
	}

	if !watchStatsContainer {
		return nil, nil
	}
	return statsContainer, nil
}
func ( engine * DockerStatsEngine ) addContainerUnsafe ( dockerID string ) ( * StatsContainer , error ) { // Make sure that this container belongs to a task and that the task // is not terminal. task , err := engine . resolver . ResolveTask ( dockerID ) if err != nil { return nil , errors . Wrapf ( err , " " , dockerID ) } if len ( task . Arn ) == 0 || len ( task . Family ) == 0 { return nil , errors . Errorf ( " " , task . Arn , task . Family ) } if task . GetKnownStatus ( ) . Terminal ( ) { return nil , errors . Errorf ( " " , dockerID , task . Arn ) } seelog . Debugf ( " " , dockerID , task . Arn ) statsContainer := newStatsContainer ( dockerID , engine . client , engine . resolver ) engine . tasksToDefinitions [ task . Arn ] = & taskDefinition { family : task . Family , version : task . Version } watchStatsContainer := false if ! engine . disableMetrics { // Adding container to the map for collecting stats watchStatsContainer = engine . addToStatsContainerMapUnsafe ( task . Arn , dockerID , statsContainer , engine . containerMetricsMapUnsafe ) } if dockerContainer , err := engine . resolver . ResolveContainer ( dockerID ) ; err != nil { seelog . Debugf ( " " , dockerID , err ) } else if dockerContainer . Container . HealthStatusShouldBeReported ( ) { // Track the container health status engine . addToStatsContainerMapUnsafe ( task . Arn , dockerID , statsContainer , engine . healthCheckContainerMapUnsafe ) seelog . Debugf ( " " , dockerID , task . Arn ) } if ! watchStatsContainer { return nil , nil } return statsContainer , nil }
// addContainerUnsafe adds a container to the map of containers being watched.
addContainerUnsafe adds a container to the map of containers being watched .