I intended to run an extensive test suite that uses SBT on our university high performance computing cluster (it uses the Lustre file system).
Since I have very basic user privileges, I was only able to try installing manually and installing by extracting the tarball.
Even with -Dsbt.boot.lock=false
, I get the following stack trace:
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
The issue is that parallel distributed file systems such as Lustre and NFS do not implement lock0
, but SBT seems to rely on it.
Not being able to run my test suite on a high performance cluster is a huge disadvantage, as it takes at least 6 hours to run the test suite on my Intel i5, 7200 rpm HDD laptop (which is my only alternative). I do not have access to any file system other than the distributed file system, so putting the boot directory elsewhere is not an option.
I had intended to submit this as an issue on GitHub, but the community guidelines indicate that posting a question on StackOverflow is a better option for this particular kind of issue.
I ended up running the tests overnight on my laptop, but I am not very pleased with this. Unless this is fixed, I will not be able to continue using SBT for my research on actor based testing.