compose/internal/sync
Milas Bowman 3b0742fd57
watch: batch & de-duplicate file events (#10865)
Adjust the debouncing logic so that it applies to all inbound file
events, regardless of whether they match a sync or rebuild rule.

When the batch is flushed out, if any event for the service is a
rebuild event, then the service is rebuilt and all sync events for
the batch are ignored. If _all_ events in the batch are sync events,
then a sync is triggered, passing the entire batch at once. This
provides a substantial performance win for the new `tar`-based
implementation, as it can efficiently transfer the changes in bulk.

Additionally, this helps with jitter, e.g. it's not uncommon for
there to be double-writes in quick succession to a file, so even if
there's not many files being modified at once, it can still prevent
some unnecessary transfers.

Signed-off-by: Milas Bowman <milas.bowman@docker.com>
2023-08-03 14:53:02 -04:00
..
docker_cp.go watch: batch & de-duplicate file events (#10865) 2023-08-03 14:53:02 -04:00
shared.go watch: batch & de-duplicate file events (#10865) 2023-08-03 14:53:02 -04:00
tar.go watch: batch & de-duplicate file events (#10865) 2023-08-03 14:53:02 -04:00
writer.go watch: support multiple containers for tar implementation (#10860) 2023-08-03 14:52:39 -04:00
writer_test.go watch: support multiple containers for tar implementation (#10860) 2023-08-03 14:52:39 -04:00