Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory

Hey Folks,

Trying a sample project build using Gradle and Docker, which is not working right now. The message that I get is the following:

# docker build -t jvm-ga . --rm=false
Sending build context to Docker daemon 2.728 MB
Step 1/14 : FROM openjdk:11
 ---> 5505a9a39df1
Step 2/14 : FROM gradle
 ---> 5bca093c883c
Step 3/14 : COPY . /home/gradle/src
 ---> Using cache
 ---> 3d5bd8a84ef7
Step 4/14 : RUN chown -R gradle:gradle /home/gradle/src
 ---> Using cache
 ---> 4fec693e39ee
Step 5/14 : WORKDIR /home/gradle/src
 ---> Using cache
 ---> 73342d29ac4c
Step 6/14 : CMD gradle --status
 ---> Using cache
 ---> ba87ac834372
Step 7/14 : CMD gradle --stop
 ---> Using cache
 ---> 7330e0a00838
Step 8/14 : RUN gradle --stop
 ---> Using cache
 ---> 60f6326a0940
Step 9/14 : RUN gradle --status
 ---> Using cache
 ---> afa23cab76f0
Step 10/14 : RUN gradle build --no-daemon --scan --trace
 ---> Running in d1bca62a9280


Welcome to Gradle 7.3.3!

Here are the highlights of this release:
 - Easily declare new test suites in Java projects
 - Support for Java 17
 - Support for Scala 3

For more details see https://docs.gradle.org/7.3.3/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.3.3/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build
> Task :buildSrc:extractPluginRequests FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildSrc:extractPluginRequests'.
> Unable to delete directory '/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests'
    Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory.
    - /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions
    - /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-common-conventions
    - /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug1 actionable task: 1 executed option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 14s


The build scan was not published due to a configuration problem.

The Gradle Terms of Service have not been agreed to.

For more information, please see https://gradle.com/help/plugin-terms-of-service.

Alternatively, if you are using Gradle Enterprise, specify the server location.
For more information, please see https://gradle.com/help/plugin-enterprise-config.

The command '/bin/sh -c gradle build --no-daemon --scan --trace' returned a non-zero code: 1
# 
# 
# cat Dockerfile
FROM openjdk:11
FROM gradle

COPY . /home/gradle/src
RUN chown -R gradle:gradle /home/gradle/src

WORKDIR /home/gradle/src
CMD gradle --status
CMD gradle --stop

RUN gradle --stop
RUN gradle --status
RUN gradle build --no-daemon --scan --trace

EXPOSE 8080

CMD ls -altriR

COPY --from=build /home/gradle/src/build/libs/*.jar /app/spring-boot-application.jar

# ENTRYPOINT ["java", "-jar", "buildSrc.jar"]

ENTRYPOINT ["java", "-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-Djava.security.egd=file:/dev/./urandom","-jar","/app/spring-boot-application.jar"]
$ find ./ -iname spring-boot-application.jar
$ cat settings.gradle
/*
 * This file was generated by the Gradle 'init' task.
 *
 * The settings file is used to specify which projects to include in your build.
 *
 * Detailed information about configuring a multi-project build in Gradle can be found
 * in the user manual at https://docs.gradle.org/7.3.2/userguide/multi_project_builds.html
 */

rootProject.name = 'jvm-ga'
include('app', 'list', 'utilities')
$
$ ls
app  buildSrc  Dockerfile  gradle  gradlew  gradlew.bat  list  settings.gradle  utilities
$

What’s confusing to me is that:

a) Is the entire path being removed above? If so why? Wouldn’t the above build folder, excluding /home/gradle/src be removed only and not anything above that?

b) Which process is holding the lock? If the working directory is holding the lock, that would suggest the entire path is getting removed but why?

c) Tried running the command from the docker container command line, same result.

d) Tried the above by deleting all images and containers. Clean slate. Same result. Attempt after a clean slate:

docker build -t jvm-ga . --rm=false
Sending build context to Docker daemon 2.728 MB
Step 1/14 : FROM openjdk:11
Trying to pull repository docker.io/library/openjdk ...
11: Pulling from docker.io/library/openjdk
0e29546d541c: Pull complete
9b829c73b52b: Pull complete
cb5b7ae36172: Pull complete
6494e4811622: Pull complete
668f6fcc5fa5: Pull complete
dc120c3e0290: Pull complete
8f7c0eebb7b1: Pull complete
Digest: sha256:33c346c637ebb17823cbeda4d4e5601c66262752dadcae559a03b090f6505a47
Status: Downloaded newer image for docker.io/openjdk:11
 ---> 5505a9a39df1
Step 2/14 : FROM gradle
Trying to pull repository docker.io/library/gradle ...
latest: Pulling from docker.io/library/gradle
7b1a6ab2e44d: Pull complete
8329695590e8: Pull complete
9bd6da4468db: Pull complete
8e07f21656cb: Pull complete
ca055f63c612: Pull complete
8327f35ed409: Pull complete
673cfd24f216: Pull complete
Digest: sha256:823c43fdda6850c7c41035af3512997c7ebc3c7d9c6f67c637fe6cd2f32c1330
Status: Downloaded newer image for docker.io/gradle:latest
 ---> 5bca093c883c
Step 3/14 : COPY . /home/gradle/src
 ---> d975c95a31b7
Step 4/14 : RUN chown -R gradle:gradle /home/gradle/src
 ---> Running in 64990099fa97

 ---> 1d51f99f3f16
Step 5/14 : WORKDIR /home/gradle/src
 ---> 0a8e201552ac
Step 6/14 : CMD gradle --status
 ---> Running in 2c9973523163
 ---> 1e21a73a7556
Step 7/14 : CMD gradle --stop
 ---> Running in 4d8e30cfc2f4
 ---> dab0ebdf4aee
Step 8/14 : RUN gradle --stop
 ---> Running in 74cd5bbeff01


Welcome to Gradle 7.3.3!

Here are the highlights of this release:
 - Easily declare new test suites in Java projects
 - Support for Java 17
 - Support for Scala 3

For more details see https://docs.gradle.org/7.3.3/release-notes.html

No Gradle daemons are running.
 ---> 4b5edc8da2d4
Step 9/14 : RUN gradle --status
 ---> Running in 2641ae14ffcf


Welcome to Gradle 7.3.3!

Here are the highlights of this release:
 - Easily declare new test suites in Java projects
 - Support for Java 17
 - Support for Scala 3

For more details see https://docs.gradle.org/7.3.3/release-notes.html

No Gradle daemons are running.

Only Daemons for the current Gradle version are displayed. See https://docs.gradle.org/7.3.3/userguide/gradle_daemon.html#sec:status
 ---> 6daa97b0c8f1
Step 10/14 : RUN gradle build --no-daemon --scan --trace
 ---> Running in 2bc5dd96fcef


Welcome to Gradle 7.3.3!

Here are the highlights of this release:
 - Easily declare new test suites in Java projects
 - Support for Java 17
 - Support for Scala 3

For more details see https://docs.gradle.org/7.3.3/release-notes.html

To honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.3.3/userguide/gradle_daemon.html#sec:disabling_the_daemon.
Daemon will be stopped at the end of the build
> Task :buildSrc:extractPluginRequests FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':buildSrc:extractPluginRequests'.
> Unable to delete directory '/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests'
    Failed to delete some children. This might happen because a process has files open or has its working directory set in the target directory.
    - /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions
    - /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-common-conventions
    - /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at 1 actionable task: 1 executed
https://help.gradle.org

BUILD FAILED in 14s

The build scan was not published due to a configuration problem.

The Gradle Terms of Service have not been agreed to.

For more information, please see https://gradle.com/help/plugin-terms-of-service.

Alternatively, if you are using Gradle Enterprise, specify the server location.
For more information, please see https://gradle.com/help/plugin-enterprise-config.

The command '/bin/sh -c gradle build --no-daemon --scan --trace' returned a non-zero code: 1

$ docker run --rm -it 6daa97b0c8f1 bash
root@f881b873ac21:/home/gradle/src#
root@f881b873ac21:/home/gradle/src#
root@f881b873ac21:/home/gradle/src# ls -altri
total 40
 76821702 drwxrwxr-x. 1 gradle gradle   20 Dec 19 05:49 gradle
144054731 -rw-rw-r--. 1 gradle gradle 2763 Dec 19 05:49 gradlew.bat
144054730 -rwxrwxr-x. 1 gradle gradle 8070 Dec 19 05:49 gradlew
144054752 -rw-rw-r--. 1 gradle gradle  391 Dec 19 05:50 settings.gradle
144054579 -rw-rw-r--. 1 gradle gradle  103 Dec 19 05:50 .gitignore
144054576 -rw-rw-r--. 1 gradle gradle  154 Dec 19 05:50 .gitattributes
144054603 drwxrwxr-x. 1 gradle gradle   61 Dec 20 18:57 buildSrc
215102510 drwx------. 1 gradle gradle 4096 Dec 20 19:25 .gradle
 76821589 drwxrwxr-x. 1 gradle gradle   22 Dec 24 02:03 .github
215101279 drwxrwxr-x. 1 gradle gradle 4096 Dec 24 15:19 .git
215102635 drwxrwxr-x. 1 gradle gradle   47 Dec 27 05:09 list
144054753 drwxrwxr-x. 1 gradle gradle   47 Dec 27 05:09 utilities
 76821598 drwxrwxr-x. 1 gradle gradle   47 Dec 27 05:09 app
144054584 -rw-rw-r--. 1 gradle gradle  585 Dec 29 05:43 Dockerfile
 76820444 drwxr-xr-x. 1 gradle gradle   16 Dec 29 06:29 ..
144054464 drwxr-xr-x. 1 gradle gradle 4096 Dec 29 06:29 .
$

Would anyone be able to help me make sense and how could I get this sample to work?

EDIT:

No way to delete these?

root@b6ebfc3c21f4:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests# rm -rf *
rm: cannot remove 'jvm.ga.java-application-conventions': Directory not empty
rm: cannot remove 'jvm.ga.java-common-conventions': Directory not empty
rm: cannot remove 'jvm.ga.java-library-conventions': Directory not empty
root@b6ebfc3c21f4:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests# ls -altri
total 36
  7837464 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57 .
 76821624 drwxrwxr-x. 1 gradle gradle   28 Dec 20 19:18 ..
 76821625 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 15:59 jvm.ga.java-application-conventions
144054615 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 15:59 jvm.ga.java-common-conventions
215102556 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 15:59 jvm.ga.java-library-conventions
root@b6ebfc3c21f4:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests# cd jvm.ga.java-application-conventions
root@b6ebfc3c21f4:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions# ls -altri
ls: cannot access 'cp_precompiled_JvmGaJavaApplicationConventions$_run_closure1.class': No such file or directory
ls: cannot access 'cp_precompiled_JvmGaJavaApplicationConventions.class': No such file or directory
ls: cannot access 'metadata.bin': No such file or directory
total 16
       ? ??????????? ? ?      ?         ?            ?  metadata.bin
       ? ??????????? ? ?      ?         ?            ?  cp_precompiled_JvmGaJavaApplicationConventions.class
       ? ??????????? ? ?      ?         ?            ? 'cp_precompiled_JvmGaJavaApplicationConventions$_run_closure1.class'
 7837464 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57  ..
76821625 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 15:59  .
root@b6ebfc3c21f4:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions#

Running the following outside the container works just fine:

gradle build --no-daemon

EDIT: 1:31PM

More info. Appears this has to do with a combination of Docker, Gradle and an NFS File Share in the mix. Gradle works fine however I don’t think docker knows how to properly access files owned by the running user on a share or to remove files from a share as that user. I might need to run docker as the user I’m working with on this NFS Share instead of using (accessing) a root owned docker instance.

$ find ./ -iname jvm.ga.java-application-conventions|xargs ls -altrid
11241459724163278626 drwxrwxr-x. 2 user@abc.xyz user@abc.xyz 160 Dec 29 11:28 ./buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions
13121943919486970551 drwxrwxr-x. 2 user@abc.xyz user@abc.xyz  26 Dec 29 11:28 ./buildSrc/build/groovy-dsl-plugins/work/metadata/jvm.ga.java-application-conventions
12993512696814995041 drwxrwxr-x. 2 user@abc.xyz user@abc.xyz  63 Dec 29 11:28 ./buildSrc/build/groovy-dsl-plugins/work/classes/jvm.ga.java-application-conventions
$ docker run --rm -it 6daa97b0c8f1 bash
root@9d5db3e3e471:/home/gradle/src#
root@9d5db3e3e471:/home/gradle/src#
root@9d5db3e3e471:/home/gradle/src# find ./ -iname jvm.ga.java-application-conventions
./buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions
./buildSrc/build/groovy-dsl-plugins/work/classes/jvm.ga.java-application-conventions
./buildSrc/build/groovy-dsl-plugins/work/metadata/jvm.ga.java-application-conventions
root@9d5db3e3e471:/home/gradle/src# find ./ -iname jvm.ga.java-application-conventions | xargs ls -altrid
 76821625 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57 ./buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions
215102626 drwxrwxr-x. 1 gradle gradle   25 Dec 20 19:18 ./buildSrc/build/groovy-dsl-plugins/work/metadata/jvm.ga.java-application-conventions
215102624 drwxrwxr-x. 1 gradle gradle   62 Dec 20 19:18 ./buildSrc/build/groovy-dsl-plugins/work/classes/jvm.ga.java-application-conventions
root@9d5db3e3e471:/home/gradle/src#
root@9d5db3e3e471:/home/gradle/src# cd ./buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions# ls -altri
total 20
76821628 -rw-rw-r--. 1 gradle gradle    1 Dec 20 18:57  metadata.bin
76821627 -rw-rw-r--. 1 gradle gradle 2232 Dec 20 18:57  cp_precompiled_JvmGaJavaApplicationConventions.class
76821626 -rw-rw-r--. 1 gradle gradle 2613 Dec 20 18:57 'cp_precompiled_JvmGaJavaApplicationConventions$_run_closure1.class'
 7837464 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57  ..
76821625 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57  .
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions# cd ..
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests# ls -altri
total 20
215102556 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57 jvm.ga.java-library-conventions
144054615 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57 jvm.ga.java-common-conventions
 76821625 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57 jvm.ga.java-application-conventions
  7837464 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57 .
 76821624 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 19:18 ..
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests# rm -rf *
rm: cannot remove 'jvm.ga.java-application-conventions': Directory not empty
rm: cannot remove 'jvm.ga.java-common-conventions': Directory not empty
rm: cannot remove 'jvm.ga.java-library-conventions': Directory not empty
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests# cd jvm.ga.java-application-conventions
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions# ls -altri
ls: cannot access 'cp_precompiled_JvmGaJavaApplicationConventions$_run_closure1.class': No such file or directory
ls: cannot access 'cp_precompiled_JvmGaJavaApplicationConventions.class': No such file or directory
ls: cannot access 'metadata.bin': No such file or directory
total 16
       ? ??????????? ? ?      ?         ?            ?  metadata.bin
       ? ??????????? ? ?      ?         ?            ?  cp_precompiled_JvmGaJavaApplicationConventions.class
       ? ??????????? ? ?      ?         ?            ? 'cp_precompiled_JvmGaJavaApplicationConventions$_run_closure1.class'
 7837464 drwxrwxr-x. 1 gradle gradle 4096 Dec 20 18:57  ..
76821625 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 18:12  .
root@9d5db3e3e471:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-application-conventions#

As long as rm isn’t ran, all files ownership ‘appears’ fine and all files are owned by gradle. As soon as rm -rf is ran, the system errors out highlighting what appears to be the core issue to the file removal.

EDIT

Same issue as the local user:

[docker@mcj-tk01 jvm-ga]$
[docker@mcj-tk01 jvm-ga]$ docker run --rm -it 13d44525a161 bash
root@4499505881d2:/home/gradle/src# ls -altri /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions
total 20
144142732 -rw-rw-r--. 1 gradle gradle    1 Dec 29 20:21  metadata.bin
144142731 -rw-rw-r--. 1 gradle gradle 2220 Dec 29 20:21  cp_precompiled_JvmGaJavaLibraryConventions.class
144142730 -rw-rw-r--. 1 gradle gradle 2602 Dec 29 20:21 'cp_precompiled_JvmGaJavaLibraryConventions$_run_closure1.class'
216876667 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 20:21  ..
144142729 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 20:21  .
root@4499505881d2:/home/gradle/src# cd /home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions
root@4499505881d2:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions# ls -altri
total 20
144142732 -rw-rw-r--. 1 gradle gradle    1 Dec 29 20:21  metadata.bin
144142731 -rw-rw-r--. 1 gradle gradle 2220 Dec 29 20:21  cp_precompiled_JvmGaJavaLibraryConventions.class
144142730 -rw-rw-r--. 1 gradle gradle 2602 Dec 29 20:21 'cp_precompiled_JvmGaJavaLibraryConventions$_run_closure1.class'
216876667 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 20:21  ..
144142729 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 20:21  .
root@4499505881d2:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions# rm -rf *
root@4499505881d2:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions# ls -altri
ls: cannot access 'cp_precompiled_JvmGaJavaLibraryConventions$_run_closure1.class': No such file or directory
ls: cannot access 'cp_precompiled_JvmGaJavaLibraryConventions.class': No such file or directory
ls: cannot access 'metadata.bin': No such file or directory
total 12
        ? ??????????? ? ?      ?         ?            ?  metadata.bin
        ? ??????????? ? ?      ?         ?            ?  cp_precompiled_JvmGaJavaLibraryConventions.class
        ? ??????????? ? ?      ?         ?            ? 'cp_precompiled_JvmGaJavaLibraryConventions$_run_closure1.class'
216876667 drwxrwxr-x. 1 gradle gradle   44 Dec 29 20:21  ..
144142729 drwxrwxr-x. 1 gradle gradle 4096 Dec 29 20:47  .
root@4499505881d2:/home/gradle/src/buildSrc/build/groovy-dsl-plugins/output/plugin-requests/jvm.ga.java-library-conventions#