commsor/titanoboa

does not start

mfehse opened this issue · 2 comments

i installed it with GUI according to to readme.
Ubuntu, openjdk 11.0.3

root@51ccf4932c3d:~/titanoboa# ./start.sh
INFO [main] - Logging initialized @2396ms
INFO [main] - Running titanoboa with parameters: nil
INFO [main] - Starting Titanoboa server...
INFO [main] - Loading database extensions...
INFO [main] - Loading system definitions...
INFO [main] - Loading tasklet definitions...
INFO [main] - Initialization: Copying external dependencies from read-only file on classpath...
INFO [main] - Initialization: Loading external dependencies from /root/titanoboa
INFO [main] - Loading external dependencies:
[[io.titanoboa.tasklet/pdf 0.1.0] [io.titanoboa.tasklet/aws-s3 0.1.0]]
from repositories {central https://repo1.maven.org/maven2/, clojars https://clojars.org/repo}
INFO [main] - Requiring external namespaces: [[io.titanoboa.tasklet.aws.s3] [io.titanoboa.tasklet.pdf]]
WARNING: read already refers to: #'clojure.core/read in namespace: io.titanoboa.tasklet.aws.s3, being replaced by: #'io.titanoboa.tasklet.aws.s3/read
INFO [main] - Starting to watch external dependencies file for changes: /root/titanoboa
INFO [main] - Hello, I am core.async server-config and I am being loaded...
Exception in thread "main" Syntax error compiling var at (5:17).
at clojure.lang.Compiler.analyzeSeq(Compiler.java:7114)
at clojure.lang.Compiler.analyze(Compiler.java:6789)
at clojure.lang.Compiler.analyze(Compiler.java:6745)
at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3104)
at clojure.lang.Compiler.analyze(Compiler.java:6797)
at clojure.lang.Compiler.analyze(Compiler.java:6745)
at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3104)
at clojure.lang.Compiler.analyze(Compiler.java:6797)
at clojure.lang.Compiler.analyze(Compiler.java:6745)
at clojure.lang.Compiler$MapExpr.parse(Compiler.java:3104)
at clojure.lang.Compiler.analyze(Compiler.java:6797)
at clojure.lang.Compiler.analyze(Compiler.java:6745)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3888)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:7108)
at clojure.lang.Compiler.analyze(Compiler.java:6789)
at clojure.lang.Compiler.analyze(Compiler.java:6745)
at clojure.lang.Compiler$InvokeExpr.parse(Compiler.java:3888)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:7108)
at clojure.lang.Compiler.analyze(Compiler.java:6789)
at clojure.lang.Compiler.analyze(Compiler.java:6745)
at clojure.lang.Compiler$BodyExpr$Parser.parse(Compiler.java:6120)
at clojure.lang.Compiler$FnMethod.parse(Compiler.java:5467)
at clojure.lang.Compiler$FnExpr.parse(Compiler.java:4029)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:7104)
at clojure.lang.Compiler.analyze(Compiler.java:6789)
at clojure.lang.Compiler.eval(Compiler.java:7173)
at clojure.lang.Compiler.load(Compiler.java:7635)
at clojure.lang.Compiler.load(Compiler.java:7582)
at clojure.core$load_reader.invokeStatic(core.clj:4087)
at clojure.core$load_string.invokeStatic(core.clj:4089)
at clojure.core$load_string.invoke(core.clj:4089)
at titanoboa.server$init_config_BANG_.invokeStatic(server.clj:104)
at titanoboa.server$init_config_BANG_.doInvoke(server.clj:98)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at titanoboa.server$start_BANG_.invokeStatic(server.clj:138)
at titanoboa.server$start_BANG_.doInvoke(server.clj:129)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at titanoboa.server$_main.invokeStatic(server.clj:175)
at titanoboa.server$_main.doInvoke(server.clj:169)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at titanoboa.server.main(Unknown Source)
Caused by: java.lang.RuntimeException: Unable to resolve var: titanoboa.system.local/local-core-system in this context
at clojure.lang.Util.runtimeException(Util.java:221)
at clojure.lang.Compiler$TheVarExpr$Parser.parse(Compiler.java:720)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:7106)
... 42 more

mikub commented

Hi @mfehse,
thanks for pointing this out - I can confirm that I can see this on JDK9 to JDK11.
It seems the namespaces located on classpath under titanoboa/system/ folder do not get automatically loaded during startup (they should).
Basically the auto-loading of these namespaces was supposed to be there just to make starting from scratch easier. Apparently it got broken at some point and is doing quite the opposite...

I am going to fix this, but in the meantime there is an easy workaround:

  1. Update ext-dependencies.clj so as it contains [titanoboa.system.local] under the :require section, e.g.:
{:coordinates [[io.titanoboa.tasklet/pdf "0.1.0"][io.titanoboa.tasklet/aws-s3 "0.1.0"]]
 :require [[titanoboa.system.local][io.titanoboa.tasklet.aws.s3][io.titanoboa.tasklet.pdf]]
 :import nil
 :repositories {"central" "https://repo1.maven.org/maven2/"
                "clojars" "https://clojars.org/repo"}}
  1. Make sure you point titanoboa to the ext-dependencies.clj (otherwise it will be recreated upon startup). Just update the start.sh script to contain:
    -Dboa.server.dependencies.path=./ext-dependencies.clj
    e.g.:
#!/bin/bash 
java -Dboa.server.dependencies.path=./ext-dependencies.clj -cp "./build/titanoboa.jar:./lib/*" titanoboa.server

Feel free to read more about the server config and dependencies at https://github.com/mikub/titanoboa/wiki/Server-Configuration

Cheers
Miro

mikub commented

This has now been fixed in this commit and the fix will go into the next release.

I also added the workaround into the current release available at https://www.titanoboa.io - so if you download the release again it should work straight away without any need for the workaround described above.

Feel free to reopen this if you still have any issues with it.