Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

manage watch applied to mulitple services #12469

Merged
merged 2 commits into from
Jan 22, 2025

Conversation

ndeloof
Copy link
Contributor

@ndeloof ndeloof commented Jan 15, 2025

What I did
watch used to be ran per service which brings race condition when a file event has impacts on multiple services.
This PR changes the implementation so we collect file events, then check all services for watch rules matching update, and eventually apply required actions.

Updated logic is :

  • create a single watcher for the paths declared by all services in project
  • debounce raw filesystem event for batch processing
  • select watch rule(s) to match updated paths; apply ignore filter by rule (as distinct service may declare distinct ignores)
  • apply changes to services and paths impacted

Related issue
closes #12427

(not mandatory) A picture of a cute animal, if possible in relation to what you did
image

@ndeloof ndeloof force-pushed the multi-service-watch branch 7 times, most recently from 45f3ec1 to c95b804 Compare January 16, 2025 13:20
@ndeloof ndeloof requested review from glours and a team January 16, 2025 14:12
@ndeloof ndeloof marked this pull request as ready for review January 16, 2025 14:42
@ndeloof ndeloof force-pushed the multi-service-watch branch 2 times, most recently from 8dced24 to 063889a Compare January 21, 2025 17:17
@ndeloof ndeloof force-pushed the multi-service-watch branch from 063889a to 571c6ec Compare January 21, 2025 17:27
Copy link
Contributor

@glours glours left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good to me, I didn't detect any regression or behavior changes during my tests 👍
I really like those improvements, thanks @ndeloof 🙏

@glours glours merged commit d04b3f4 into docker:main Jan 22, 2025
24 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Feb 13, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [docker/compose](https://github.com/docker/compose) | minor | `v2.32.4` -> `v2.33.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>docker/compose (docker/compose)</summary>

### [`v2.33.0`](https://github.com/docker/compose/releases/tag/v2.33.0)

[Compare Source](docker/compose@v2.32.4...v2.33.0)

#### What's Changed

> \[!IMPORTANT]
> This release introduce support for [Bake](https://docs.docker.com/build/bake/) to manage builds as an alternative to the internal buildkit client. This new feature can be enabled by setting `COMPOSE_BAKE=1` variable. Bake will become the default builder in a future release.

##### ✨ Improvements

-   let user know bake is now supported by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12524
-   support additional_context reference to another service by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12485
-   add support for BUILDKIT_PROGRESS by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12458
-   add --with-env flag to publish command by [@&#8203;glours](https://github.com/glours) in docker/compose#12482
-   Update ls --quiet help description by [@&#8203;maxproske](https://github.com/maxproske) in docker/compose#12541
-   Publish warn display env vars by [@&#8203;glours](https://github.com/glours) in docker/compose#12486

##### 🐛 Fixes

-   Fix bake support by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12507
-   Update link in stats --help output by [@&#8203;maxproske](https://github.com/maxproske) in docker/compose#12523
-   Properly handle "builtin" seccomp profile by [@&#8203;r-bk](https://github.com/r-bk) in docker/compose#12478
-   manage `watch` applied to mulitple services by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12469

##### 🔧  Internal

-   use main branch for docs upstream validation workflow by [@&#8203;crazy-max](https://github.com/crazy-max) in docker/compose#12487
-   fix provenance for binaries and generate sbom by [@&#8203;crazy-max](https://github.com/crazy-max) in docker/compose#12479
-   add codeowners file by [@&#8203;glours](https://github.com/glours) in docker/compose#12480
-   remove exit code per error type used by legacy metrics system by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12502
-   Dockerfile: update golangci-lint to v1.63.4 by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12546
-   Full test coverage for compatibility cmd by [@&#8203;maxproske](https://github.com/maxproske) in docker/compose#12528
-   don't send raw os.Args to opentelemetry but a pseudo command line by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12530
-   add docker engine v28.x to the test-matrix by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12539
-   enable copyloopvar linter by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12542
-   go.mod: remove toolchain directive by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12551

##### ⚙️ Dependencies

-   bump buildx v0.20.1 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12488
-   bump docker to v27.5.1 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12491
-   bump compose-go v2.4.8 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12543
-   bump golang.org/x/sys from 0.28.0 to 0.30.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12529
-   bump github.com/moby/term v0.5.2 by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12540
-   bump github.com/otiai10/copy from 1.14.0 to 1.14.1 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12493
-   bump github.com/jonboulle/clockwork from 0.4.0 to 0.5.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12430
-   bump github.com/spf13/pflag from 1.0.5 to 1.0.6 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12548
-   bump golang.org/x/sync from 0.10.0 to 0.11.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12547
-   bump gotest.tools/v3 from 3.5.1 to 3.5.2 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12549

#### New Contributors

-   [@&#8203;r-bk](https://github.com/r-bk) made their first contribution in docker/compose#12478
-   [@&#8203;maxproske](https://github.com/maxproske) made their first contribution in docker/compose#12523

**Full Changelog**: docker/compose@v2.32.4...v2.33.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjYuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] Docker Compose watch fails to replace new containers if change affects multiple containers
2 participants