How do I run the multi-version client on MacOS arm64?

We’re trying to deploy the multi-version client in our Clojure app so we can upgrade our FDB 7.1 cluster to 7.3 with minimal downtime. Because the app is Clojure, and thus runs on the JVM and has full JVM interop, we’re using the Java bindings with our own shim to make interacting with it ‘Clojure-ish’.

Our CI pipeline (Linux, x86_64) is throwing a load of errors when a 7.3 client with the external lib for 7.1 loaded tries to talk to a 7.1 server. I know basic functionality works (I have SSHed in to the pipeline runner and executed a simple get), so I’m pretty sure this is something weird our app is doing that I need to debug.

Trying to debug this on the CI machine without my IDE etc is a massive pain in the ass, so I’m trying to replicate the failure on my local dev machine (MacOS, arm64), but I am completely failing to get the client to talk directly to a 7.1 local server there.

The story so far:

  • 7.3 client with 7.3 server works fine.
  • 7.3 client with FDB.options().setDisableLocalClient() and no external libs loaded doesn’t work (as expected).
  • 7.3 client with FDB.options().setDisableLocalClient() and FDB.options().setExternalClientLibrary("/path/to/external/7.3/libfdb_c.so") against a 7.3 server does work, so I’ve proved that loading external client libs ‘in general’ is working.
  • 7.3 client with FDB.options().setExternalClientLibrary("/path/to/external/7.1/libfdb_c.so") against a 7.1 server just times out when I try to make a request.

The same pattern works fine on the CI machine, so this would seem to be something specific to MacOS (or arm64). What else do I need to do to get the 7.3 client on MacOS to talk to a 7.1 server successfully?

1 Like