# Codehaus Cargo : Container Timeout

Created by Former user, last modified by S. Ali Tokmen on Jan 28, 2021

### Definition

Timeout after which the container start/stop is deemed failed

This feature is only available for local containers

### Explanation

Cargo has a timeout for container start and stop operations. If the time taken to start/stop a container exceeds the timeout period the operations is considered failed and the container is then set in the unknown state.

The default timeout value is 2 minutes (120000 milliseconds). This value can be modified as shown below.

If the given timeout is too small, the CARGO container will give you an error message similar to this:

    [INFO] ------------------------------------------------------------------------
    [ERROR] FATAL ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Failed to start the JBoss 5.1.0 container.
    Deployable http://localhost:8080/cargocpc/index.html failed to finish deploying
    within the timeout period [5000]. The Deployable state is thus unknown.
    [INFO] ------------------------------------------------------------------------

### Example using the Java API

    LocalContainer container = ...;
    container.setTimeout(180000L);
    System.out.println("Timeout = " + container.getTimeout());

### Example using the Maven 3 plugin

    <container>
      [...]
      <timeout>180000</timeout>
      [...]
    </container>

### Disabling timeout

If you set the timeout to `0`, CARGO will not wait for the container to start or stop.

### Using different timeouts when starting and stopping the container

Shutdown usually takes much much shorther than startup, it therefore often makes sense to use a shorter timeout for stopping the container than for starting it. With the Cargo Maven plugin, this is easy to do: indeed, in each `<execution>` block of the Maven plugin, you can have different `<configuration>` blocks. When done so, the plugin will use an inheritance scheme; i.e. for each execution the outermost configuration elements will be overriden by innermost elements each time these are defined.

Here is an example that uses different timeouts when starting and stopping the container:

    <plugin>
      <groupId>org.codehaus.cargo</groupId>
      <artifactId>cargo-maven3-plugin</artifactId>
      <executions>
        <execution>
          <id>start</id>
          <phase>pre-integration-test</phase>
          <goals>
            <goal>start</goal>
          </goals>
          <configuration>
            <container>
              <timeout>60000</timeout>
            </container>
          </configuration>
        </execution>
        <execution>
          <id>stop</id>
          <phase>post-integration-test</phase>
          <goals>
            <goal>stop</goal>
          </goals>
          <configuration>
            <container>
              <timeout>10000</timeout>
            </container>
          </configuration>
        </execution>
      </executions>
      <configuration>
        [...]
      </configuration>
    </plugin>