Building/Testing with Metabase v45.3

Just some notes/issues about driver development with Metabase v45.3, compared to v43.7.

This release includes a new driver for Athena. Unfortunately the upstream JDBC driver is not on maven central, so Metabase are hosting it on AWS. Using a third party repository seems to cause dependency problems for the Clojure tools.

Problem 1: the usual build commands fail, specifically when building the Athena driver, since the JDBC jar isn't found on the classpath or downloaded.

yarn install --frozen-lockfile --prefer-offline
./bin/build

Fix: for some reason, the dependency is resolved when using the Athena driver's own deps.edn. This results in the driver jar being downloaded to ~/.m2/repository/com/metabase/athena-driver. Then the above build commands can succeed.

cd modules/drivers/athena
clojure -X:deps prep

Problem 2: building a 3rd party driver copied (or symlink) into modules/drivers/my-driver doesn't build: again because of Athena classpath issues (despite it building the main Metabase jar OK).

# Defined in my-driver/deps.edn as `:exec-fn build-drivers.build-driver/build-driver!`
DRIVERS=my-driver clojure -X:build

Fix: temporarily replace the original modules/drivers/deps.edn content with an empty map {} so that no other drivers are processed at all when building my-driver.

mv "modules/drivers/deps.edn" "modules/drivers/deps.edn.original"
echo "{}" > "modules/drivers/deps.edn"

Problem 3: some tests related to the upcoming "apps" feature fail, where they expect certain card data to be returned by the API in response to "scaffolding". The data is created, but the test assertions (maybe intentionally) don't accept any other data. E.g. {"x": [{"y": "z"}]} expected but {"x": [{"y": "z"}, {"a": "b"}]} returned. 3 tests fail on the same type of assertion:

  • metabase.api.app-test/scaffold-test (app_test.clj:176)
  • metabase.api.app-test/scaffold-app-test (app_test.clj:223)
  • metabase.api.app-test/scaffold-app-test (app_test.clj:248)

Fix: these tests relate to an unreleased feature and were subsequently deleted / moved as part of v46.0 preparation (PR 27413), so they could be ignored. Maybe it's a timezone issue or something, but they fail even for the postgres driver.

rm -f "test/metabase/api/app_test.clj"

Thanks for coming to my TED talk.

hey Lindsay, long time no see. Is there any reason why you won't write to the support email?

A few things:

  1. which version are you trying to build?
  2. what's your setup (machine architecture, versions of clojure, node, etc)

I'm asking this as I was able to build without problems recently, also, remember you can build with metabase/Dockerfile at master · metabase/metabase · GitHub so you don't need to install anything

Regarding apps, don't worry about that yet

Hi @Luiggi, thanks for responding - to answer your questions:

Is there any reason why you won't write to the support email?

I was able to find workarounds in a reasonable amount of time, and probably no action is required from the dev team as a result, so sharing this troubleshooting on the forum seemed like the best place.

which version are you trying to build?

Metabase v1.45.3, with a private 3rd party driver. A complete backend/frontend build of the main Metabase jar is needed in order to build a 3rd party driver and run the Metabase (+ extra 3rd party) test suites against that driver.

what's your setup

os: CentOS 7.9.2009
clojure: 1.11.0.1100
java: openjdk 11.0.18 2023-01-17 LTS
node: 16.19.1
yarn: 1.22.19

I was able to build without problems recently, also, remember you can build with metabase/Dockerfile so you don't need to install anything

It's worth considering - it seems that among the partner drivers, Clickhouse have recently changed to using docker. Exasol, Firebolt and Starburst (plus most other community driver's I've looked at) follow the non-docker methods described in the developer documentation (here and here). Either way, ultimately we are using the same build tools/scripts so it's possible that these kinds of issues might still occur.

Hello, i have the same issue while build the metabase_duckdb_plugin third party plugin.

I use closure deps.edn to compile plugin.
After updating Metabase to the v1.45.3 i have the error:

Error building classpath. Could not find artifact com.metabase:athena-jdbc:jar:2.0.33 in central (https://repo1.maven.org/maven2/)

To build the plugin i use the devcontainer ov VSCode, so don't need to install anything too.

try checking the new documentation in our dev docs

There is Guide how to write driver, there is description of plugin manifest, but there is no descriptions of deps.edn

On the plugin manifest page there is link to Build-driver scripts README but it does't work.

This is my deps.edn. I don't know what's wrong with it. After I changed the version of Metabase from v1.44.x to v1.45.3 it just stopped building the driver.

Error building classpath. Could not find artifact com.metabase:athena-jdbc:jar:2.0.33 in central (Central Repository:)