В моем коде должно быть запущено несколько экземпляров gradle, начиная с python, поскольку каждый объект gradle будет представлять собой независимую симуляцию (для этого потребуется некоторое время, прежде чем я его убью).
Итак, когда Я запускаю свой код на отдельной (персональной) машине, код выполняется (хотя и медленно) без ошибок, которые отображаются на HP C. В настоящее время у меня есть пробежка, которая в этот момент идет в течение ~ 40 часов (на лабораторном компьютере), и она не показывает ни одной из ошибок, которые появляются на HP C.
Основная ошибка заключается в том, что запуск нескольких Java симуляторов в рабочих скриптах как-то противоречив.
Ошибка:
INFO:JAVA:FAILURE: Build failed with an exception.
INFO:JAVA:
INFO:JAVA:* What went wrong:
INFO:JAVA:Could not create service of type FileHasher using GradleUserHomeScopeServices.createCachingFileHasher().
INFO:JAVA:> Timeout waiting to lock file hash cache (/home/ad5238/.gradle/caches/5.1.1/fileHashes). It is currently in use by another Gradle instance.
INFO:JAVA: Owner PID: 184305
INFO:JAVA: Our PID: 148798
INFO:JAVA: Owner Operation:
INFO:JAVA: Our operation:
INFO:JAVA: Lock file: /home/ad5238/.gradle/caches/5.1.1/fileHashes/fileHashes.lock
INFO:JAVA:
INFO:JAVA:* Try:
INFO:JAVA: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.
INFO:JAVA:
INFO:JAVA:* Get more help at https://help.gradle.org
INFO:JAVA:
INFO:JAVA:BUILD FAILED in 1m 6s
Ответ одного из администраторов HP C:
В кластере HP C, пожалуйста, будьте осторожны с блокировкой файлов это иногда ненадежно. Например, блокировка файла на / нуля работает только для процессов, работающих на одном вычислительном узле, блокировка файла не будет работать на вычислительном узле. Даже для / home блокировка файла на одном вычислительном узле не будет немедленно доступна с других узлов, сетевых файловых систем.
Я посмотрел вокруг и нашел решения: Кэш В настоящее время он используется другой экземпляр Gradle
Я также пытался использовать gradlew clean build --parallel
, но он тоже ничего не делал.
Однако это не сработало. Я думаю, что это из-за того, что на HP C. Этот HP C работает так, что я добавляю задания в очередь с помощью сценария оболочки (bash parent.sh
, который запрашивает определенное количество ресурсов c и запускает python parent.py
, bash child.sh 1
-> python child.py --id $1
) и запрашивать ресурсы для каждой работы. Затем, когда HP C сможет выделить ресурсы, запрошенные сценарием оболочки (например, parent
), HP C выполнит команду python.
Каждый сценарий python (1 родитель и n детей) будет создавать симуляцию в Java (следовательно, gradle), и родитель будет динамически распределять работу между любыми живыми детьми, пока у родителя не останется работы.
Я могу предоставить ссылки на мой код, если это необходимо.