openvidu-server: removed any stranded recording container on startup

pull/203/head
pabloFuente 2019-01-24 13:03:13 +01:00
parent 8f14084b4e
commit 98d029a729
1 changed files with 16 additions and 0 deletions

View File

@ -47,6 +47,7 @@ import org.springframework.http.HttpStatus;
import com.github.dockerjava.api.exception.DockerClientException; import com.github.dockerjava.api.exception.DockerClientException;
import com.github.dockerjava.api.exception.InternalServerErrorException; import com.github.dockerjava.api.exception.InternalServerErrorException;
import com.github.dockerjava.api.exception.NotFoundException; import com.github.dockerjava.api.exception.NotFoundException;
import com.github.dockerjava.api.model.Container;
import com.github.dockerjava.core.command.PullImageResultCallback; import com.github.dockerjava.core.command.PullImageResultCallback;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
@ -153,6 +154,9 @@ public class RecordingManager {
log.info("Docker image available"); log.info("Docker image available");
} }
// Clean any stranded openvidu/openvidu-recording container on startup
this.removeExistingRecordingContainers();
this.initRecordingPath(); this.initRecordingPath();
} }
@ -408,6 +412,18 @@ public class RecordingManager {
return recording; return recording;
} }
private void removeExistingRecordingContainers() {
List<Container> existingContainers = this.composedRecordingService.dockerClient.listContainersCmd()
.withShowAll(true).exec();
for (Container container : existingContainers) {
if (container.getImage().startsWith(RecordingManager.IMAGE_NAME)) {
log.info("Stranded openvidu/openvidu-recording Docker container ({}) removed on startup",
container.getId());
this.composedRecordingService.dockerClient.removeContainerCmd(container.getId()).withForce(true).exec();
}
}
}
private boolean recordingImageExistsLocally() { private boolean recordingImageExistsLocally() {
boolean imageExists = false; boolean imageExists = false;
try { try {