When a primary MongoDB node fails over to a secondary, pymongo raises an AutoReconnect error. Let's catch that and retry the operation so that we truly are Highly Available (in the sense that the user will never notice the few ms of "downtime" caused by a failover). This is particularly important when hosting backend with a DBaaS that routinely fails over the master as a way of compacting shards. NOTE: In order to get all MongoDB tests green, a tiny unrelated bug in test_shards was fixed as part of this patch. Closes-Bug: 1214973 Change-Id: Ibf172e30ec6e7fa0bbb8fdcebda9e985d1e49714
Marconi
Message queuing service for OpenStack
Running a local Marconi server with MongoDB
Note: These instructions are for running a local instance of Marconi and not all of these steps are required. It is assumed you have MongoDB installed and running.
From your home folder create the
~/.marconi
folder and clone the repo:$ cd $ mkdir .marconi $ git clone https://github.com/openstack/marconi.git
Copy the Marconi config files to the directory
~/.marconi
:$ cp marconi/etc/marconi.conf-sample ~/.marconi/marconi.conf $ cp marconi/etc/logging.conf-sample ~/.marconi/logging.conf
Find the
[drivers:storage:mongodb]
section in~/.marconi/marconi.conf
and modify the URI to point to your local mongod instance:uri = mongodb://$MONGODB_HOST:$MONGODB_PORT
For logging, find the
[DEFAULT]
section in~/.marconi/marconi.conf
and modify as desired:log_file = server.log
Change directories back to your local copy of the repo:
$ cd marconi
Run the following so you can see the results of any changes you make to the code without having to reinstall the package each time:
$ pip install -e .
Start the Marconi server with logging level set to INFO so you can see the port on which the server is listening:
$ marconi-server -v
Test out that Marconi is working by creating a queue:
$ curl -i -X PUT http://127.0.0.1:8888/v1/queues/samplequeue -H "Content-type: application/json" -d '{"metadata": "Sample Queue"}'
You should get an HTTP 201 along with some headers that will look similar to this:
HTTP/1.0 201 Created
Date: Fri, 25 Oct 2013 15:34:37 GMT
Server: WSGIServer/0.1 Python/2.7.3
Content-Length: 0
Location: /v1/queues/samplequeue