SBT принудительно блокирует файловую систему даже в распределенных файловых системах.

Я намеревался запустить обширный набор тестов, использующих SBT, в нашем высокопроизводительном вычислительном кластере университета (он использует файловую систему Lustre).

Поскольку у меня очень простые пользовательские привилегии, я смог только попробовать установить вручную и установить, распаковав архив.

Даже с -Dsbt.boot.lock=false я получаю следующую трассировку стека:

java.io.IOException: Function not implemented
    at sun.nio.ch.FileDispatcherImpl.lock0(Native Method)
    at sun.nio.ch.FileDispatcherImpl.lock(FileDispatcherImpl.java:89)
    at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1024)
    at java.nio.channels.FileChannel.tryLock(FileChannel.java:1154)
    at xsbt.boot.Locks$GlobalLock.withChannel$1(Locks.scala:86)
    at xsbt.boot.Locks$GlobalLock.xsbt$boot$Locks$GlobalLock$$withChannelRetries$1(Locks.scala:78)
    at xsbt.boot.Locks$GlobalLock$$anonfun$withFileLock$1.apply(Locks.scala:97)
    at xsbt.boot.Using$.withResource(Using.scala:10)
    at xsbt.boot.Using$.apply(Using.scala:9)
    at xsbt.boot.Locks$GlobalLock.ignoringDeadlockAvoided(Locks.scala:58)
    at xsbt.boot.Locks$GlobalLock.withLock(Locks.scala:48)
    at xsbt.boot.Locks$.apply0(Locks.scala:31)
    at xsbt.boot.Locks$.apply(Locks.scala:28)
    at xsbt.boot.Launch.locked(Launch.scala:238)
    at xsbt.boot.Launch.app(Launch.scala:147)
    at xsbt.boot.Launch.app(Launch.scala:145)
    at xsbt.boot.Launch$.run(Launch.scala:102)
    at xsbt.boot.Launch$$anonfun$apply$1.apply(Launch.scala:35)
    at xsbt.boot.Launch$.launch(Launch.scala:117)
    at xsbt.boot.Launch$.apply(Launch.scala:18)
    at xsbt.boot.Boot$.runImpl(Boot.scala:41)
    at xsbt.boot.Boot$.main(Boot.scala:17)
    at xsbt.boot.Boot.main(Boot.scala)
Error during sbt execution: java.io.IOException: Function not implemented

Проблема в том, что параллельные распределенные файловые системы, такие как Lustre и NFS, не реализуют lock0, но SBT, похоже, полагается на него.

Невозможность запуска набора тестов на высокопроизводительном кластере является огромным недостатком, поскольку запуск набора тестов на моем ноутбуке Intel i5 с жестким диском 7200 об/мин занимает не менее 6 часов (это моя единственная альтернатива). У меня нет доступа к какой-либо файловой системе, кроме распределенной файловой системы, поэтому размещение загрузочного каталога в другом месте не является вариантом.

Я намеревался отправить это как проблему на GitHub, но в правилах сообщества указано, что размещение вопроса на StackOverflow — лучший вариант для решения этой конкретной проблемы.

В итоге я провел тесты всю ночь на своем ноутбуке, но я не очень доволен этим. Если это не будет исправлено, я не смогу продолжать использовать SBT для своего исследования тестирования на основе актеров.


person abanana    schedule 12.04.2015    source источник
comment
› Я намеревался отправить это как проблему на GitHub, но в правилах сообщества указано, что публикация вопроса на StackOverflow является лучшим вариантом для такого рода проблем. Не стесняйтесь открывать вопросы Github для запросов функций и отчетов об ошибках. Теперь для этого есть дело — github.com/sbt/sbt/issues/2222   -  person Eugene Yokota    schedule 29.09.2015


Ответы (1)


Вам нужно смонтировать клиент с помощью -o flock, чтобы включить распределенную блокировку.

person LustreOne    schedule 19.04.2018