Skip to content

Commit c9d2284

Browse files
committed
Add error handling to /search
1 parent 7e6b382 commit c9d2284

File tree

5 files changed

+28
-1453
lines changed

5 files changed

+28
-1453
lines changed

dist/server/mongodb-grafana-proxy.plist

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<key>WorkingDirectory</key>
1515
<string>/usr/local/var/lib/grafana/plugins/mongodb-grafana/dist/server</string>
1616

17-
<key>ProgramArguments</key>
17+
<key>ProgramArguments</key>
1818
<array>
1919
<string>/usr/local/lib/npm-packages/bin/forever</string>
2020
<string>-l</string>
@@ -34,9 +34,5 @@
3434
<key>KeepAlive</key>
3535
<false/>
3636

37-
<key>StandardErrorPath</key>
38-
<string>/tmp/mycommand.err</string>
39-
<key>StandardOutPath</key>
40-
<string>/tmp/mycommand.out</string>
4137
</dict>
4238
</plist>

dist/server/mongodb-proxy.js

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,21 @@ app.all('/search', function(req, res, next)
2525
logRequest(req.body, "/search")
2626
setCORSHeaders(res);
2727

28+
// Generate an id to track requests
29+
const requestId = ++requestIdCounter
30+
// Add state for the queries in this request
31+
var queryStates = []
32+
requestsPending[requestId] = queryStates
2833
// Parse query string in target
2934
queryArgs = parseQuery(req.body.target, {})
30-
doTemplateQuery(queryArgs, req.body.db, res, next);
35+
if (queryArgs.err != null)
36+
{
37+
queryError(requestId, queryArgs.err, next)
38+
}
39+
else
40+
{
41+
doTemplateQuery(requestId, queryArgs, req.body.db, res, next);
42+
}
3143
});
3244

3345
// State for queries in flight. As results come it, acts as a semaphore and sends the results back
@@ -131,12 +143,12 @@ app.all('/query', function(req, res, next)
131143
}
132144
);
133145

134-
// app.use(function(error, req, res, next)
135-
// {
136-
// // Any request to this server will get here, and will send an HTTP
137-
// // response with the error message
138-
// res.status(500).json({ message: error.message });
139-
// });
146+
app.use(function(error, req, res, next)
147+
{
148+
// Any request to this server will get here, and will send an HTTP
149+
// response with the error message
150+
res.status(500).json({ message: error.message });
151+
});
140152

141153
// Get config from server/default.json
142154
var serverConfig = config.get('server');
@@ -300,7 +312,7 @@ function runAggregateQuery( requestId, queryId, body, queryArgs, res, next )
300312

301313
// Runs a query to support templates. Must returns documents of the form
302314
// { _id : <id> }
303-
function doTemplateQuery(queryArgs, db, res, next)
315+
function doTemplateQuery(requestId, queryArgs, db, res, next)
304316
{
305317
if ( queryArgs.err == null)
306318
{
@@ -312,10 +324,15 @@ function doTemplateQuery(queryArgs, db, res, next)
312324
{
313325
if ( err != null )
314326
{
315-
next(err)
327+
queryError(requestId, err, next )
316328
}
317329
else
318330
{
331+
// Remove request from list
332+
if ( requestId in requestsPending )
333+
{
334+
delete requestsPending[requestId]
335+
}
319336
const db = client.db(dbName);
320337
// Get the documents collection
321338
const collection = db.collection(queryArgs.collection);

dist/server/mongodb-proxy.log

Lines changed: 0 additions & 3 deletions
This file was deleted.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "grafana-mongodb",
33
"private": true,
4-
"version": "0.3.0",
4+
"version": "0.3.1",
55
"description": "",
66
"main": "server/mongodb-proxy.js",
77
"scripts": {

0 commit comments

Comments
 (0)