[Monetdb-developers] Remote Merovingian control
This message only applies to the current development branch of MonetDB, and is informational only, mainly addressed to others working with the current development branch. monetdb[1] goes abroad After quite some hacking to move code back and forth between components, we now got the first version of merovingian[2] and monetdb[1] that can do remote control. I will give some small examples here so everyone that is interested can get up to speed fast, and/or get an idea on the possibilities. Basically, all functionality that used to be implemented in monetdb, is now implemented in merovingian. That means, for instance creation of a database is performed by merovingian. A positive side-effect of this is that the discovery aspect of databases is now real-time, e.g.: % monetdb release dumptest taken database out of maintenance mode: dumptest 2009-09-25 11:54:10 MSG control[8590]: (local): released database 'dumptest' 2009-09-25 11:54:10 MSG discovery[8590]: new database mapi:monetdb://pegasus.ins.cwi.nl:50000/dumptest (ttl=660s) We can see that when database is released again using monetdb release, it is immediately announced in the network, making it available for use. Locking a database has the oposite effect, of course. Next, the "(local)" string indicates that this control command was received over the local UNIX socket, as was the case in previous releases of merovingian. In addition to this local access, monetdb now also can connect over a TCP socket, which needs not to be remote, e.g.: % monetdb -hjarl.ins.cwi.nl -Pxxxxxx status name state uptime health last crash testdbatjenniesmachine stopped 100%, 4m - 2009-09-25 11:56:19 MSG control[11449]: pegasus.ins.cwi.nl:49652: served status list Here we can see that the merovingian at jarl reports it served a status list to pegasus, which is the host I performed the monetdb status at. Note the -Pxxxxxxxx in there, which is the passphrase of the remote merovingian. This passphrase is by default a random string, but can be set to something else by editing the .merovingian_pass file in the dbfarm and restarting merovingian. The way to find other merovingians in the vincinity is by using monetdb discover. Its output now includes how to reach each merovingian, if remote control is enabled for them. Remote control over TCP can be disabled in monetdb5.conf by unsetting mero_controlport. Control entries can be recognised in discover's output by the trailing asterisk, which one can also glob for: % monetdb discover "*\*" location pegasus.ins.cwi.nl:50001* volund.ins.cwi.nl:50001* jarl.ins.cwi.nl:64001* This command just returned all merovingians that have remote control enabled and reports their hostname and port to connect to. The remote control protocol is very simple, and I'm planning to make at least a Java library available to perform these commands, such that monetdb[1] no longer needs to be the only application to perform commands with merovingian. [1] http://homepages.cwi.nl/~fabian/MonetDB/Man%20Pages.html/monetdb.html [2] http://homepages.cwi.nl/~fabian/MonetDB/Man%20Pages.html/merovingian.html
participants (1)
-
Fabian Groffen