Revise.jl not working for jupyter server on LSF based cluster

Hi,
I’m regularly running a notebook server on an LSF based linux cluster. However, I can’t seem to get Revise to work. Any code changes have no impact on the running session, even with manually running revise(). Is this expected or do I have to add some flags to the submitted job? Has anyone encountered something similar? I couldn’t find anything. The debugging revise logger doesn’t show any “actions” when revising.

Julia Version 1.1.0
Commit 80516ca202 (2019-01-21 21:24 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Xeon(R) CPU E3-1284L v4 @ 2.90GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)

[295af30f] Revise v2.1.2

Thanks!

1 Like

What filesystem are you using? Does it support inotify?

How do I check this?

Check whether https://timholy.github.io/Revise.jl/dev/config/#Polling-and-NFS-mounted-code-directories:-JULIA_REVISE_POLL-1 fixes the problem.

Bonus points for checking the debug logs!

2 Likes

From the Linux command line

mount

should display all mounted filesystems. Then you can look up this information for a particular filesystem.

1 Like

Thanks for the quick help. The file system is NFS as you guessed. The environment variable fixes the solution. For anyone looking this up and having the same issue, my job submission looks like this now:

bsub -env "all, JULIA_REVISE_POLL=1" -n 2 -R "rusage[mem=8000]" -W 09:00 "module load new gcc/4.8.2 python/3.6.1 & jupyter-lab &"

This really makes things a lot easier now :slight_smile:

EDIT: I forgot my bonus points!

Revise.LogRecord(Debug, DeleteMethod, Action, Revise_4ac0f476, "/cluster/home/gerickf/.julia/packages/Revise/RW8TD/src/Revise.jl", 226, (time=1.556797317047698e9, deltainfo=(Tuple{typeof(domath),Number}, MethodSummary(:domath, :Example, Symbol("/cluster/home/gerickf/.julia/dev/Example/src/Example.jl"), 16, Tuple{typeof(domath),Number}))))
Revise.LogRecord(Debug, Eval, Action, Revise_9147188b, "/cluster/home/gerickf/.julia/packages/Revise/RW8TD/src/Revise.jl", 276, (time=1.556797317439156e9, deltainfo=(Example, :(domath(x::Number) = begin
          #= /cluster/home/gerickf/.julia/dev/Example/src/Example.jl:16 =#
          x + 15
      end))))
Revise.LogRecord(Debug, Eval, Action, Revise_9147188b, "/cluster/home/gerickf/.julia/packages/Revise/RW8TD/src/Revise.jl", 276, (time=1.55679731749337e9, deltainfo=(Example, :(#= /cluster/home/gerickf/.julia/dev/Example/src/Example.jl:11 =# Core.:(@doc) "    domath(x::Number)\n\nReturn `x + 5`.\n" domath(x::Number) = begin
              #= /cluster/home/gerickf/.julia/dev/Example/src/Example.jl:16 =#
              x + 15
          end false))))
2 Likes

I just meant that you had already received your bonus points for checking in the first place! Check your bonus-point account at your local bonus-point bank :smile:.

BTW, I’ve never “lived” on a system that required polling, so I don’t have any experience with it. Please do report any issues you encounter. In particular, the interval of 5s is just taken from the default for FileWatching.poll_file. If you don’t like the setting, try changing it here. If you play with it a while and conclude that this doesn’t cause any problems, a Revise PR to change the default would be considered.

2 Likes