Hi
I built bazel on a Centos system and have limited authorization (I'm not on the sudoers list) on the system. When I try to execute bazel, I show an error like Error: unexpected result from F_SETLK: Function not implemented. How can I handle it?
@laszlocsomor , you commented on a similar issue #2012, perhaps you know what's the solution here?
That message suggests fcntl(2) with F_SETLK is not implemented on CentOS. The only place where we use this functionality is in blaze_util::AcquireLock which prevents two Bazel instances from running concurrently in the same output root, and overwriting each others outputs.
@ekarem : Can you try running bazel like bazel --output_user_root=$HOME/bazelout build <args...>? I don't think it will help but let's give it a try, maybe the "function not implemented" is just CentOS's way of saying you don't have access to the default output user root directory.
Hi,
I have a similiar problem. I am using bazel:
Build label: 0.4.5- (@non-git)
on CentOS. I have no problem running bazel --output_user_root=$HOME/bazel but when I want to change directory to some project directories I get message Error: unexpected result from F_SETLK: (on Linux machine)
Of course it is worth to mention that my project directories are kept on Lustre infrastructure. I have checked and same problem apppear if I want to use space on smbfs:
Error: unexpected result from F_SETLK: (error: 45): Operation not supported (on Mac OS machine)
@krzysg : sounds like Lustre doesn't support file locking. That is plausible given that Lustre is a distributed file system where locking is difficult. Bazel could give a better error message and continue though.
What is the update on this? Is there any solution to run bazel on lustre FS. I want to use it to build tensorflow.
No updates. Can you use a different output directory ("--output_user_root=/some/other/path")?
sounds like Lustre doesn't support file locking. That is plausible given that Lustre is a distributed
file system where locking is difficult.
Lustre _does_ support file locking, even between clients, it just doesn't enable this by default because of overhead. If your application is running on only a single node, you can mount the Lustre client using the -o localflock mount option, which enables flock but it is not coherent across client nodes. This is the fastest if you only need flock for a single-node application.
If you need flock to be coherent between an application running on multiple client nodes at the same time, mount all of the involved clients with the -o flock mount option.
Most helpful comment
No updates. Can you use a different output directory ("--output_user_root=/some/other/path")?