Issues running Genie apps on JuliaHub

Apologies if this is not the right place to post - I’m following up on a Slack thread in the #juliahub-usage channel Slack

Working on adding out-of-the-box support for Genie apps on JuliaHub but there seem to be issues with the JuliaHub run script.

I will repeat the details here for convenience:

I’m looking to run a Genie app on JuliaHub - namely this https://github.com/GenieFramework/whats-your-number by connecting this repo (main branch). I have added the necessary logic in bin/main.jl and confirmed to work locally when running julia --project -- bin/main.jl However, it fails to start on JuliaHub with the following exception:

File: /opt/juliahub/master_startup.jl:298
Timestamp: 8 Dec 2021, 20:10-1638990604616
Worker: jr-xutybap2rz-hjf2t, id: 1
Thread: 1
Module: Main.JuliaRunJob
Level: Error
Group: master_startup
Exception:
MethodError: no method matching joinpath(::Nothing, ::String)
Closest candidates are:
  joinpath(!Matched::AbstractString, ::AbstractString...) at path.jl:296
  joinpath(!Matched::URIs.URI, ::String...) at /home/jrun/.julia/packages/URIs/o9DQG/src/URIs.jl:509
Stacktrace:
  [1] install_packages(; code_script::String, mode::String, juliarun_run_mode::String)
    @ Main.JuliaRunJob /opt/juliahub/common_startup.jl:255
  [2] (::Main.JuliaRunJob.var"#23#28"{String, String})()
    @ Main.JuliaRunJob /opt/juliahub/master_startup.jl:277
  [3] macro expansion
    @ ~/.julia/packages/Logging2/5fG3t/src/Logging2.jl:24 [inlined]
  [4] macro expansion
    @ ./task.jl:387 [inlined]
  [5] redirect_stderr(f::Main.JuliaRunJob.var"#23#28"{String, String}, logger::LoggingExtras.EarlyFilteredLogger{JuliaRunLoggers.JuliaRunLogger, CloudWatchLogging.var"#40#42"{Float64, Base.CoreLogging.LogLevel, CloudWatchLogging.TokenBucket}}; level::Base.CoreLogging.LogLevel)
    @ Logging2 ~/.julia/packages/Logging2/5fG3t/src/Logging2.jl:21
  [6] redirect_stderr
    @ ~/.julia/packages/Logging2/5fG3t/src/Logging2.jl:16 [inlined]
  [7] #22
    @ /opt/juliahub/master_startup.jl:256 [inlined]
  [8] macro expansion
    @ ~/.julia/packages/Logging2/5fG3t/src/Logging2.jl:24 [inlined]
  [9] macro expansion
    @ ./task.jl:387 [inlined]
 [10] redirect_stdout(f::Main.JuliaRunJob.var"#22#27"{String, String, LoggingExtras.EarlyFilteredLogger{JuliaRunLoggers.JuliaRunLogger, CloudWatchLogging.var"#40#42"{Float64, Base.CoreLogging.LogLevel, CloudWatchLogging.TokenBucket}}}, logger::LoggingExtras.EarlyFilteredLogger{JuliaRunLoggers.JuliaRunLogger, CloudWatchLogging.var"#40#42"{Float64, Base.CoreLogging.LogLevel, CloudWatchLogging.TokenBucket}}; level::Base.CoreLogging.LogLevel)
    @ Logging2 ~/.julia/packages/Logging2/5fG3t/src/Logging2.jl:21
 [11] redirect_stdout
    @ ~/.julia/packages/Logging2/5fG3t/src/Logging2.jl:16 [inlined]
 [12] (::Main.JuliaRunJob.var"#21#26"{String, String, LoggingExtras.EarlyFilteredLogger{JuliaRunLoggers.JuliaRunLogger, CloudWatchLogging.var"#40#42"{Float64, Base.CoreLogging.LogLevel, CloudWatchLogging.TokenBucket}}})()
    @ Main.JuliaRunJob /opt/juliahub/master_startup.jl:255
 [13] with_logstate(f::Function, logstate::Any)
    @ Base.CoreLogging ./logging.jl:491
 [14] macro expansion
    @ ~/.julia/packages/CloudWatchLogging/Ixju9/src/logger.jl:228 [inlined]
 [15] macro expansion
    @ ./task.jl:387 [inlined]
 [16] with_logger(f::Function, logger::CloudWatchLogging.CloudWatchLogger, logstate::Base.CoreLogging.LogState; nretries::Int64, reset_error_count_secs::Int64, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
    @ CloudWatchLogging ~/.julia/packages/CloudWatchLogging/Ixju9/src/logger.jl:218
 [17] with_logger
    @ ~/.julia/packages/CloudWatchLogging/Ixju9/src/logger.jl:211 [inlined]
 [18] with_logger(f::Function, logger::LoggingExtras.TransformerLogger{CloudWatchLogging.CloudWatchLogger, JuliaRunLoggers.var"#2#4"{Dict{Symbol, Any}, Dict{Symbol, Function}}}, logstate::Base.CoreLogging.LogState)
    @ JuliaRunLoggers ~/.julia/packages/JuliaRunLoggers/ymXlf/src/JuliaRunLoggers.jl:52
 [19] with_logger(f::Function, logger::JuliaRunLoggers.JuliaRunLogger, logstate::Base.CoreLogging.LogState)
    @ JuliaRunLoggers ~/.julia/packages/JuliaRunLoggers/ymXlf/src/JuliaRunLoggers.jl:93
 [20] #with_logger#6
    @ ~/.julia/packages/JuliaRunLoggers/ymXlf/src/JuliaRunLoggers.jl:51 [inlined]
 [21] with_logger(f::Function, logger::LoggingExtras.EarlyFilteredLogger{JuliaRunLoggers.JuliaRunLogger, CloudWatchLogging.var"#40#42"{Float64, Base.CoreLogging.LogLevel, CloudWatchLogging.TokenBucket}})
    @ JuliaRunLoggers ~/.julia/packages/JuliaRunLoggers/ymXlf/src/JuliaRunLoggers.jl:51
 [22] main()
    @ Main.JuliaRunJob /opt/juliahub/master_startup.jl:254
 [23] top-level scope
    @ /opt/juliahub/master_startup.jl:315
 [24] include(mod::Module, _path::String)
    @ Base ./Base.jl:386
 [25] exec_options(opts::Base.JLOptions)
    @ Base ./client.jl:285
 [26] _start()
    @ Base ./client.jl:485

In addition, per the follow up by @jeremiedb there might be a environment conflict with the HOST variable? Is this used/reserved by JuliaHub?

Thanks!

This is an error on our end. Should be fixed soonish.

In the future it’s probably best to use the “Support” link in the footer.

Not as far as I know, no.

Understood - looking forward to the fix. Any way of being notified when the fix will arrive (is it tied to a planned release or something)?

Re HOST - understood, will run more tests once the platform will allow it.

Support - understood. Also managed to find the Github issues link - let me know if you need me to open an issue about this.


If I may say, some things are hard to find in the JuliaHub UI. “Help” takes you to the docs - then you need to chose Support then you read a text to get a link to the issue tracker. Three clicks and 4 pages to report an issue.

Same goes for the logs - there could be a “logs” link next to the “launch” button of the app (or in a drop down menu) and ideally a link to the logs from the app failure page (ideally only if I’m the owner of the app).

1 Like

We’ll ping you here once the issue is resolved.

Fair points. Thanks for the feedback! :slight_smile:

You can get the support widget directly from the footer, but obviously that’s not easy enough to find. There definitely is a link to the logs on the Jobs page, but having easier access from the apps page would be nice for sure.

1 Like