avast/gradle-docker-compose-plugin

JavaExec does not exit properly when interrupted with container logging enabled and no output from a container

Offen

#242 geöffnet am 11.06.2020

 (3 Kommentare) (0 Reaktionen) (0 zugewiesene Personen)Groovy (103 Forks)batch import
help wantedquestion

Repository-Metriken

Stars
 (429 Sterne)
PR-Merge-Metriken
 (Durchschn. Merge 24T 11h) (2 gemergte PRs in 30 T)

Beschreibung

Long running JavaExec processes are left running when used with docker compose if the following happens:

  1. The process is long running
  2. The docker-compose stanza in gradle attempts to log the container output using one of
    • captureContainersOutput
    • captureContainersOutputToFile
  3. The container doesn't actually produce any output
    • Ran into this with the memcached container specifically

The following demonstrates the issue:

  1. Execute ./gradlew run to start
    • Web server that is long running
    • Has capture output statements in the docker-compose stanza
    • Uses memcached in the associated docker-compose file
  2. Inspect the process list
    • See that the process is running
  3. Interrupt gradle with ctrl-c
  4. Inspect the process list again
    • Notice that the process is still running
    • The process doesn't exit

Not sure how much of this is relevant but adding it in case it's useful:

  • O/S is Ubuntu 18.04
  • OpenJDK 11 from the O/S
  • Happens on the command line and when invoked with IntelliJ
  • Interestingly, doesn't seem to be an issue when gradle/the application is run in debug mode

I'm happy to provide more detail or information as required.

Contributor Guide