avast/gradle-docker-compose-plugin

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

Aperta

#242 aperta il 11 giu 2020

 (3 commenti) (0 reazioni) (0 assegnatari)Groovy (103 fork)batch import
help wantedquestion

Metriche repository

Star
 (429 stelle)
Metriche merge PR
 (Merge medio 24g 11h) (2 PR mergiate in 30 g)

Descrizione

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.

Guida contributor