Error when running the master

After cloning the master from github and running ‘lein ring server’ I’m getting an exception on the browser but nothing is being logged on the terminal. The exception is as follows:
{“message”:“No method in multimethod ‘connection-properties’ for dispatch value: :googleanalytics”,“type”:“class java.lang.IllegalArgumentException”,“stacktrace”:[“clojure.lang.MultiFn.getFn(MultiFn.java:156)”,“clojure.lang.MultiFn.invoke(MultiFn.java:229)”,"–> driver.util$available_drivers_info$iter__24112__24116$fn__24117.invoke(util.clj:120)",“driver.util$available_drivers_info.invokeStatic(util.clj:118)”,“driver.util$available_drivers_info.invoke(util.clj:114)”,“public_settings$public_settings.invokeStatic(public_settings.clj:223)”,“public_settings$public_settings.invoke(public_settings.clj:209)”,“routes.index$load_entrypoint_template.invokeStatic(index.clj:72)”,“routes.index$load_entrypoint_template.invoke(index.clj:69)”,“routes.index$entrypoint.invokeStatic(index.clj:93)”,“routes.index$entrypoint.invoke(index.clj:88)”,“middleware.exceptions$catch_uncaught_exceptions$fn__74752.invoke(exceptions.clj:104)”,“middleware.exceptions$catch_api_exceptions$fn__74749.invoke(exceptions.clj:92)”,“middleware.log$log_api_call$fn__75205.invoke(log.clj:162)”,“middleware.security$add_security_headers$fn__74707.invoke(security.clj:122)”,“middleware.json$wrap_json_body$fn__74992.invoke(json.clj:63)”,“middleware.json$wrap_streamed_json_response$fn__75010.invoke(json.clj:97)”,“middleware.session$bind_current_user$fn__70743$fn__70744.invoke(session.clj:209)”,“middleware.session$do_with_current_user.invokeStatic(session.clj:184)”,“middleware.session$do_with_current_user.invoke(session.clj:177)”,“middleware.session$bind_current_user$fn__70743.invoke(session.clj:208)”,“middleware.session$wrap_current_user_id$fn__70720.invoke(session.clj:161)”,“middleware.session$wrap_session_id$fn__70705.invoke(session.clj:123)”,“middleware.auth$wrap_api_key$fn__74639.invoke(auth.clj:27)”,“middleware.misc$maybe_set_site_url$fn__75240.invoke(misc.clj:56)”,“middleware.misc$bind_user_locale$fn__75243.invoke(misc.clj:72)”,“middleware.misc$add_content_type$fn__75228.invoke(misc.clj:28)”,“middleware.misc$disable_streaming_buffering$fn__75251.invoke(misc.clj:87)”]}

Java runtime:
{“java.runtime.name” “OpenJDK Runtime Environment”,
“java.runtime.version” “1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10”,
“java.vendor” “Private Build”,
“java.vendor.url” “http://java.oracle.com/”,
“java.version” “1.8.0_222”,
“java.vm.name” “OpenJDK 64-Bit Server VM”,
“java.vm.version” “25.222-b10”,
“os.name” “Linux”,
“os.version” “4.15.0-65-generic”,
“user.language” “en”,
“user.timezone” “Africa/Nairobi”}

lein version 2.7.1

What am I doing wrong?

Hi @partoa
I would recommend that you use release-0.33.x currently - there’s a lot of timezone changes in master that are not completely finished yet.
But I’m guessing you’re trying to make a query to a GA database?
You first need to build the drivers, since lein ring server only builds the core drivers (H2, MySQL and Postgres):
Run ./bin/build-drivers.sh and then you can use lein ring server

@partoa Also, could you post the output of the following?

java -version
nodejs --version
lein --version
yarn --version
lsb_release -d
git log -1 --format="commit %H"
git status | head -1

java -version
openjdk version “1.8.0_222”
OpenJDK Runtime Environment (build 1.8.0_222-8u222-b10-1ubuntu1~18.04.1-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

node --version
v10.17.0

lein --version
version 2.7.1

yarn --version
1.19.1
lsb_release -d
Description: Ubuntu 18.04.3 LTS

git log -1 --format=“commit %H”
commit 4a3f0369ffeff9676d97919fe177c00dc7ede3b4

git status | head -1
On branch master

I’m getting on a clean clone. I’d assume the homepage doesn’t try to access anything. I suspect version of Java, OpenJDK instead of Oracle.

While at it, I can’t seem to find documentation on how to incorporate other drivers. It would be great if you could point me in the right direction.

@partoa
Could you try release-0.33.x instead - that’s the upcoming 0.33.5 release.
Your Leining version is a bit old - latest is 2.9.1
I’ve only had problems with non-Oracle Java, so I switched to Oracle 8 for building Metabase a long time ago - you can easily run Metabase on all/most of the other Java types.

As for creating your own drivers, have a look at this issue and check the comments. You might want to read some of the issues that was referenced too, since there are several drivers available, which might be a good starting point for you:
https://github.com/metabase/metabase/issues/9348

Out of curiosity, which driver are you planning to build?

Thank you for your help. I’ll let you know how it goes.

Nothing custom for now. From the list you gave, the only one we will be adding is SQLite.

@partoa Okay, then I misunderstood your question - I thought you were creating a new driver.
SQLite already exists as one of the official drivers. When you build drivers, then they’ll be available in ./plugins/ (and ./resources/modules/ but I’m actually not sure which one lein ring server looks in) and Metabase will load those drivers on startup.

The command lein with-profiles +include-all-drivers ring server doesn’t have the error while lein ring server does.

@partoa
Yes, because you’re building drivers together with running the development server.
But like I said earlier, just build the drivers, then run the development server.
And since you’re not planning on creating your own driver, then you just need to build the built-in drivers.

For posterity, I found this thread searching for:
“No method in multimethod ‘connection-properties’ for dispatch value:”

Turns out I had JAVA_HOME set to a different JDK than the one in PATH.

‘lein ring server’ would seem to start successfully, but hitting localhost:3000 would give the ‘No method…’ error.