spiegel_podman/libpod
Valentin Rothberg 4a447a2133 work queue: simplify and use a wait group
Simplify the work-queue implementation by using a wait group. Once all
queued work items are done, the channel can be closed.

The system tests revealed a flake (i.e., #14351) which indicated that
the service container does not always get stopped which suggests a race
condition when queuing items.  Those items are queued in a goroutine to
prevent potential dead locks if the queue ever filled up too quickly.
The race condition in question is that if a work item queues another,
the goroutine for queuing may not be scheduled fast enough and the
runtime shuts down; it seems to happen fairly easily on the slow CI
machines.  The wait group fixes this race and allows for simplifying
the code.

Also increase the queue's buffer size to 10 to make things slightly
faster.

[NO NEW TESTS NEEDED] as we are fixing a flake.

Fixes: #14351
Signed-off-by: Valentin Rothberg <vrothberg@redhat.com>
2022-05-25 10:17:46 +02:00
..
common fix a number of godot issues 2022-03-22 13:04:35 +01:00
define fix --init with /dev bind mount 2022-05-23 13:59:05 +02:00
driver bump go module to version 4 2022-01-18 12:47:07 +01:00
events auto update: create an event 2022-05-23 14:11:29 +02:00
layers Initial checkin from CRI-O repo 2017-11-01 11:24:59 -04:00
linkmode go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
lock test: use T.TempDir to create temporary test directory 2022-05-05 21:09:41 +08:00
logs enable gocritic linter 2022-04-26 18:12:22 +02:00
plugin bump go module to version 4 2022-01-18 12:47:07 +01:00
shutdown Fix CI flake on time of shutdown for API service 2021-10-12 09:53:19 -07:00
boltdb_state.go Instead of erroring, clean up after dangling IDs in DB 2022-05-23 11:21:15 -04:00
boltdb_state_internal.go libpod: unset networks before storing container conf 2022-05-02 13:23:16 +02:00
boltdb_state_linux.go go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
common_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container.go play kube: service container 2022-05-12 10:51:13 +02:00
container_api.go enable gocritic linter 2022-04-26 18:12:22 +02:00
container_commit.go container-commit: support --squash to squash layers into one 2022-02-23 17:38:28 +05:30
container_config.go play kube: service container 2022-05-12 10:51:13 +02:00
container_copy_linux.go enable errcheck linter 2022-04-29 14:06:38 +02:00
container_exec.go enable gocritic linter 2022-04-26 18:12:22 +02:00
container_graph.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_graph_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
container_inspect.go k8systemd: run k8s workloads in systemd 2022-05-17 10:18:58 +02:00
container_internal.go pod: add exit policies 2022-05-02 13:29:59 +02:00
container_internal_linux.go Use containers/common/pkg/util.StringToSlice 2022-05-23 12:16:54 -04:00
container_internal_linux_test.go test: use T.TempDir to create temporary test directory 2022-05-05 21:09:41 +08:00
container_internal_test.go test: fix failing TestPostDeleteHooks 2022-05-05 21:39:46 +08:00
container_linux.go go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
container_log.go Add option for pod logs to display different colors per container. 2022-03-29 17:29:13 +02:00
container_log_linux.go Fix --tail log on restart problem 2022-04-13 14:07:15 -04:00
container_log_unsupported.go Add option for pod logs to display different colors per container. 2022-03-29 17:29:13 +02:00
container_path_resolution.go document that using libpod package directly is not supported 2022-03-23 19:05:29 +01:00
container_stat_linux.go enable gocritic linter 2022-04-26 18:12:22 +02:00
container_top_linux.go contain_top_linux.go: s/TODO/NOTE/ 2022-05-24 13:40:02 +02:00
container_validate.go k8systemd: run k8s workloads in systemd 2022-05-17 10:18:58 +02:00
diff.go fix --init with /dev bind mount 2022-05-23 13:59:05 +02:00
doc.go document that using libpod package directly is not supported 2022-03-23 19:05:29 +01:00
events.go auto update: create an event 2022-05-23 14:11:29 +02:00
healthcheck.go healthcheck, libpod: Read healthcheck event output from os pipe 2022-02-04 21:15:03 +05:30
healthcheck_linux.go enable staticcheck linter 2022-04-22 12:51:29 +02:00
info.go Robust whitespace split of cpu utilization line from /proc/stat 2022-05-14 00:34:56 +00:00
info_test.go Robust whitespace split of cpu utilization line from /proc/stat 2022-05-14 00:34:56 +00:00
kube.go Use containers/common/pkg/util.StringToSlice 2022-05-23 12:16:54 -04:00
mounts_linux.go go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
networking_linux.go Use containers/common/pkg/util.StringToSlice 2022-05-23 12:16:54 -04:00
networking_linux_test.go enable unparam linter 2022-04-25 13:23:20 +02:00
networking_machine.go enable gocritic linter 2022-04-26 18:12:22 +02:00
networking_slirp4netns.go enable gocritic linter 2022-04-26 18:12:22 +02:00
oci.go bump go module to version 4 2022-01-18 12:47:07 +01:00
oci_attach_linux.go libpod: treat ECONNRESET as EOF 2022-05-04 15:43:12 +02:00
oci_conmon.go podman: add new cgroup mode split 2020-06-25 17:16:12 +02:00
oci_conmon_exec_linux.go play kube log tag handling 2022-05-06 15:59:06 -04:00
oci_conmon_linux.go sdnotify: send MAINPID only once 2022-05-12 11:11:37 +02:00
oci_missing.go bump go module to version 4 2022-01-18 12:47:07 +01:00
oci_util.go bump go module to version 4 2022-01-18 12:47:07 +01:00
options.go Use containers/common/pkg/util.StringToSlice 2022-05-23 12:16:54 -04:00
pod.go play kube: service container 2022-05-12 10:51:13 +02:00
pod_api.go play kube: service container 2022-05-12 10:51:13 +02:00
pod_internal.go bump go module to version 4 2022-01-18 12:47:07 +01:00
pod_status.go bump go module to version 4 2022-01-18 12:47:07 +01:00
pod_top_linux.go go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
reset.go system prune: remove all networks 2022-02-03 13:14:07 +01:00
runtime.go work queue: simplify and use a wait group 2022-05-25 10:17:46 +02:00
runtime_cstorage.go Remove the runtime lock 2022-02-22 11:05:26 -05:00
runtime_ctr.go Use containers/common/pkg/util.StringToSlice 2022-05-23 12:16:54 -04:00
runtime_img.go play kube: service container 2022-05-12 10:51:13 +02:00
runtime_migrate.go enable unparam linter 2022-04-25 13:23:20 +02:00
runtime_pod.go Use containers/common/pkg/util.StringToSlice 2022-05-23 12:16:54 -04:00
runtime_pod_linux.go play kube: service container 2022-05-12 10:51:13 +02:00
runtime_renumber.go auto update: create an event 2022-05-23 14:11:29 +02:00
runtime_volume.go Remove the runtime lock 2022-02-22 11:05:26 -05:00
runtime_volume_linux.go volume: add new option -o o=noquota 2022-04-28 13:29:01 +02:00
runtime_worker.go work queue: simplify and use a wait group 2022-05-25 10:17:46 +02:00
service.go k8systemd: run k8s workloads in systemd 2022-05-17 10:18:58 +02:00
state.go use libnetwork from c/common 2022-01-12 17:07:30 +01:00
state_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
stats.go podman stats: improve cpu average calc 2022-03-22 17:44:58 +01:00
storage.go bump go module to version 4 2022-01-18 12:47:07 +01:00
util.go enable errcheck linter 2022-04-29 14:06:38 +02:00
util_linux.go go fmt: use go 1.18 conditional-build syntax 2022-03-18 09:11:53 +01:00
util_linux_test.go Fix mismatch between log messages and behavior of libpod.LabelVolumePath. 2020-09-13 23:24:15 -04:00
util_test.go bump go module to version 4 2022-01-18 12:47:07 +01:00
volume.go volume: add new option -o o=noquota 2022-04-28 13:29:01 +02:00
volume_inspect.go bump go module to version 4 2022-01-18 12:47:07 +01:00
volume_internal.go volume: add new option -o o=noquota 2022-04-28 13:29:01 +02:00
volume_internal_linux.go Add podman volume mount support 2022-02-28 14:26:22 -05:00