Command to find version

Is there a command to find the installed server, client lib and server lib versions? Like I want to find this multi-thread-client: Add test for Java bindings by vishesh · Pull Request #4339 · apple/foundationdb · GitHub

You can determine the versions of the executables (e.g. fdbserver and fdbcli) with the -v flag:

$ fdbcli -v
FoundationDB CLI 6.2 (v6.2.27)
source version 87cdf2b331bfe91d0a4d0e0ac09f1adbe1f2e012
protocol fdb00b062010001

It should be noted that if you have any process that connects to the cluster and interacts with it (e.g. fdbcli), then you can know the major/minor release version and the protocol version because of the fact that different versions are incompatible with each other. So for example, if I use the above fdbcli to read a key from the database successfully, then I know that the cluster is version 6.2.x and has protocol version fdb00b062010001.

If you are connected to the cluster, then you can also use that to determine the specific patch version of all server processes that are connected to the cluster by reading the status json output in fdbcli. This data is reported at cluster.processes[$ID].version. Client versions are also reported in status, though this data is aggregated and it’s not always possible to tell the version of a specific client this way. You can see this data in cluster.clients.supported_versions, which is a list of objects with various data in it. See the full schema here.

Finally, you can determine the version of client library using a tool that is available in the GitHub repository: foundationdb/fdb_c_version.py at master · apple/foundationdb · GitHub. If you run this script and pass in the path to your library, it will print out version information about it. For example:

$ contrib/monitoring/fdb_c_version.py /usr/local/lib/libfdb_c.dylib
FoundationDB Client 6.2 (v6.2.27)
source version 87cdf2b331bfe91d0a4d0e0ac09f1adbe1f2e012
protocol fdb00b062010001