I have recently started debugging the mserver5
application using vscode
and a very comfy plugin for cmake
called CMake Tools
. Moreover, I am using gcc 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
as a compiler together with the following launch.json
debug configuration for mserver5
in vscode
:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) mserver5 triangleDB",
"type": "cppdbg",
"request": "launch",
// Resolved by CMake Tools:
"program": "${command:cmake.launchTargetPath}",
"args": ["--dbpath=/home/mledl/dbfarm/triangleDB", "--set", "mapi_port=0"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/build",
"environment": [
{
// add the directory where our target was built to the PATHs
// it gets resolved by CMake Tools:
"name": "PATH",
"value": "$PATH:${command:cmake.launchTargetDirectory}"
},
],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{ "description":"In this mode GDB will be attached to both processes after a call to fork() or vfork().",
"text": "-gdb-set detach-on-fork off",
"ignoreFailures": true
},
{ "description": "The new process is debugged after a fork. The parent process runs unimpeded.",
"text": "-gdb-set follow-fork-mode child",
"ignoreFailures": true
}
]
}
]
}
The database I am connecting to (here triangleDB
) has been created within a dbfarm
using the monetdb
application and I am going to connect to it using the mclient
application with the default username and password combination monetdb
. I can successfully connect to and query my triangleDB
when starting it using the monetdb
application withing a running dbfarm
.
When starting up the mserver5
for debugging from vscode
using the above launch.json
file and connecting to it using mclient
and the monetdb
user I cannot authenticate somehow and get the following error printed to the mserver5
logs:
client1: createExceptionInternal: !ERROR: InvalidCredentialsException:checkCredentials:invalid credentials for user 'monetdb'
Does anybody know why mserver5
cannot retrieve the default user? Does it rely on the deamon monetdbd
to retrieve the user data from? Can someone tell me what I am missing or how I can efficiently debug the mserver5
?
Another point is that I need to set mapi_port=0
in order to make mserver5
bind to available ports since it is opening two mapi connections
somehow when debugging with vscode
and CLion
. The application crashes when using a specific port since the second binding attempt will be on an already use address. The following section shows that two connections are opened when debugging:
# MonetDB 5 server v11.40.0
# This is an unreleased version
# Serving database 'triangleDB', using 24 threads
# Compiled for x86_64-pc-linux-gnu/64bit with 128bit integers
# Found 31.349 GiB available main-memory of which we use 25.549 GiB
# Copyright (c) 1993 - July 2008 CWI.
# Copyright (c) August 2008 - 2021 MonetDB B.V., all rights reserved
# Visit https://www.monetdb.org/ for further information
# Listening for connection requests on mapi:monetdb://localhost:46093/
# Listening for connection requests on mapi:monetdb://localhost:40387/
Thanks in advance for everybody that can help me out on this one. Looking forward to hearing from you and sty safe everyone.
If your database was created using monetdb
and you want to start it directly using mserver5
, you need to tell mserver5
where the .vaultkey
is.
In you dbfarm
, do a grep monet_vault_key merovingian.log
, copy the whole --set monet_vault_key=/<path-to>/dbfarm/demo/.vaultkey
and add this option to the start-up command of your mserver5
.