2

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.

abanana
  • 140
  • 2
  • 10
  • 1
    > 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. Feel free to open Github issues for feature requests and bug reports. There's now a case for this - https://github.com/sbt/sbt/issues/2222 – Eugene Yokota Sep 29 '15 at 19:59

1 Answers1

0

You need to mount the client with -o flock in order to enable distributed locking.

LustreOne
  • 339
  • 2
  • 9