spiegel_podman/libpod
Matthew Heon f5938be1f7 Improve robustness of pod removal
Removing a pod must first removal all containers in the pod.
Libpod requires the state to remain consistent at all times, so
references to a deleted pod must all be cleansed first.

Pods can have many containers in them. We presently iterate
through all of them, and if an error occurs trying to clean up
and remove any single container, we abort the entire operation
(but cannot recover anything already removed - pod removal is not
an atomic operation).

Because of this, if a removal error occurs partway through, we
can end up with a pod in an inconsistent state that is no longer
usable. What's worse, if the error is in the infra container, and
it's persistent, we get zombie pods - completely unable to be
removed.

When we saw some of these same issues with containers not in
pods, we modified the removal code there to aggressively purge
containers from the database, then try to clean up afterwards.
Take the same approach here, and make cleanup errors nonfatal.
Once we've gone ahead and removed containers, we need to see
pod deletion through to the end - we'll log errors but keep
going.

Also, fix some other small things (most notably, we didn't make
events for the containers removed).

Signed-off-by: Matthew Heon <matthew.heon@pm.me>
2019-05-07 21:28:22 -04:00
..
common Set blob cache directory based on GraphDriver 2019-03-29 08:27:33 -04:00
driver switch projectatomic to containers 2018-08-16 17:12:36 +00:00
events Fix 'restart' event in journald 2019-05-03 10:43:14 -04:00
image change from sysregistries to sysregistriesv2 2019-05-03 10:38:51 -04:00
layers Initial checkin from CRI-O repo 2017-11-01 11:24:59 -04:00
lock Do not make renumber shut down the runtime 2019-02-21 10:51:42 -05:00
boltdb_state.go Switch Libpod over to new explicit named volumes 2019-04-04 12:26:29 -04:00
boltdb_state_internal.go Switch Libpod over to new explicit named volumes 2019-04-04 12:26:29 -04:00
boltdb_state_linux.go podman-remote inspect 2019-01-18 15:43:11 -06:00
boltdb_state_unsupported.go podman-remote inspect 2019-01-18 15:43:11 -06:00
common_test.go podman-remote inspect 2019-01-18 15:43:11 -06:00
container.go Move to using constants for valid restart policy types 2019-05-03 10:36:16 -04:00
container_api.go Address review comments on restart policy 2019-05-03 10:36:16 -04:00
container_attach_linux.go Fix manual detach from containers to not wait for exit 2019-02-12 10:14:57 -05:00
container_attach_unsupported.go Add darwin support for remote-client 2019-01-11 11:30:28 -06:00
container_commit.go Fix podman command --change CMD 2019-04-17 15:44:50 -04:00
container_graph.go pod infra container is started before a container in a pod is run, started, or attached. 2019-02-15 16:39:24 -05:00
container_graph_test.go Update unit tests to use in-memory lock manager 2019-01-04 09:51:09 -05:00
container_inspect.go Add support for retry count with --restart flag 2019-05-03 10:36:16 -04:00
container_internal.go Small code fix 2019-05-03 11:42:34 -04:00
container_internal_linux.go Add --read-only-tmpfs options 2019-04-26 12:29:10 -04:00
container_internal_test.go Potentially breaking: Make hooks sort order locale-independent 2019-04-09 21:08:44 +02:00
container_internal_unsupported.go Make sure buildin volumes have the same ownership and permissions as image 2019-03-15 10:44:44 -04:00
container_linux.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
container_log.go podman logs on created container should exit 2019-03-18 08:58:48 -05:00
container_top_linux.go top: fallback to execing ps(1) 2019-05-03 11:20:16 +02:00
container_top_unsupported.go podman-top: use containers/psgo 2018-07-19 20:47:52 +00:00
container_unsupported.go Do not fetch pod and ctr State on retrieval in Bolt 2018-07-31 14:19:50 +00:00
diff.go Don't output inodes created to run a container 2018-09-21 09:45:14 +00:00
errors.go Fix manual detach from containers to not wait for exit 2019-02-12 10:14:57 -05:00
events.go Add System event type and renumber, refresh events 2019-04-25 16:23:09 -04:00
healthcheck.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
healthcheck_linux.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
healthcheck_unsupported.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
in_memory_state.go Switch Libpod over to new explicit named volumes 2019-04-04 12:26:29 -04:00
info.go vendor buildah, image, storage, cni 2019-03-28 15:12:26 +01:00
kube.go Use GetContainer instead of LookupContainer for full ID 2019-04-12 10:59:00 -04:00
mounts_linux.go set root propagation based on volume properties 2018-11-26 13:55:02 +01:00
networking_linux.go Integration test tweaks 2019-03-15 13:41:01 -05:00
networking_unsupported.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
oci.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
oci_linux.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
oci_unsupported.go enable podman-remote on windows 2019-04-30 15:28:39 -05:00
options.go Move to using constants for valid restart policy types 2019-05-03 10:36:16 -04:00
pod.go Convert pods to SHM locks 2019-01-04 09:51:09 -05:00
pod_api.go Sending signals to containers prevents restart policy 2019-05-03 10:36:16 -04:00
pod_internal.go pod infra container is started before a container in a pod is run, started, or attached. 2019-02-15 16:39:24 -05:00
pod_top_linux.go Add podman pod top 2018-08-23 15:01:17 +00:00
pod_top_unsupported.go Add podman pod top 2018-08-23 15:01:17 +00:00
runtime.go change from sysregistries to sysregistriesv2 2019-05-03 10:38:51 -04:00
runtime_ctr.go Merge pull request #2913 from mheon/get_instead_of_lookup 2019-04-12 09:38:48 -07:00
runtime_img.go images: add context to GetParent/IsParent/Remove/Prune... 2019-04-25 08:57:58 -04:00
runtime_img_test.go switch projectatomic to containers 2018-08-16 17:12:36 +00:00
runtime_migrate.go Small fixes for #2950 2019-05-01 15:07:30 -04:00
runtime_pod.go Fixing network ns segfault 2018-08-23 18:16:28 +00:00
runtime_pod_infra_linux.go Fix generation of infra container command 2019-03-10 14:25:13 -04:00
runtime_pod_linux.go Improve robustness of pod removal 2019-05-07 21:28:22 -04:00
runtime_pod_unsupported.go Added option to share kernel namespaces in libpod and podman 2018-08-23 18:16:28 +00:00
runtime_renumber.go Add System event type and renumber, refresh events 2019-04-25 16:23:09 -04:00
runtime_volume.go Add event logging to libpod, even display to podman 2019-03-11 15:08:59 -05:00
runtime_volume_linux.go Fix E2E tests 2019-04-04 12:27:20 -04:00
runtime_volume_unsupported.go Add gating tasks 2019-03-13 12:10:35 -05:00
state.go Switch Libpod over to new explicit named volumes 2019-04-04 12:26:29 -04:00
state_test.go Add ability to rewrite pod configs in the database 2019-02-21 10:51:42 -05:00
stats.go Add ability for ubuntu to be tested 2018-10-03 12:45:37 -05:00
stats_config.go changes to allow for darwin compilation 2018-06-29 20:44:09 +00:00
stats_unsupported.go changes to allow for darwin compilation 2018-06-29 20:44:09 +00:00
storage.go OpenTracing support added to start, stop, run, create, pull, and ps 2019-02-18 09:57:08 -05:00
util.go Remove ulele/deepcopier in favor of JSON deep copy 2019-03-27 20:00:31 -04:00
util_linux.go Default to SELinux private label for play kube mounts 2019-03-28 09:54:31 -04:00
util_test.go Stage3 Image Library 2018-03-14 20:21:31 +00:00
util_unsupported.go Default to SELinux private label for play kube mounts 2019-03-28 09:54:31 -04:00
version.go enable podman-remote version 2019-01-21 15:23:30 -06:00
volume.go volumes: push the chown logic to runtime_volume_linux.go 2019-03-29 14:04:44 +01:00
volume_internal.go Remove locks from volumes 2019-02-21 10:51:42 -05:00