私は、大学のハイ パフォーマンス コンピューティング クラスタ (Lustre ファイル システムを使用) で SBT を使用する大規模なテスト スイートを実行するつもりでした。
私は非常に基本的なユーザー権限を持っているため、手動でインストールするか、tarball を抽出してインストールすることしかできませんでした。
でも-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 rpm HDD ラップトップ (私の唯一の代替手段) でテスト スイートを実行するには少なくとも 6 時間かかるため、高性能クラスターでテスト スイートを実行できないことは大きな欠点です。分散ファイル システム以外のファイル システムにはアクセスできないので、ブート ディレクトリを別の場所に置くという選択肢はありません。
これをGitHubの問題として送信するつもりでしたが、コミュニティ ガイドラインによると、この特定の種類の問題については、StackOverflow に質問を投稿する方が適切なオプションであることが示されています。
ラップトップで一晩中テストを実行することになりましたが、これにはあまり満足していません. これが修正されない限り、アクター ベース テストの研究に SBT を使用し続けることはできません。