From 9352ed09ebcb8ac6805afd32d2fe01daee8f169d Mon Sep 17 00:00:00 2001 From: Mano Marks Date: Tue, 27 Dec 2016 10:07:14 -0800 Subject: [PATCH] Revert "added connection pooling to postgres to prevent client timeouts" --- result/package.json | 1 - result/server.js | 35 +++++++++++++++++++++-------------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/result/package.json b/result/package.json index 0f208ca..f7863e1 100644 --- a/result/package.json +++ b/result/package.json @@ -15,7 +15,6 @@ "method-override": "^2.3.5", "async": "^1.5.0", "pg": "^4.4.3", - "pg-pool": "1.6.0", "socket.io": "^1.3.7" } } diff --git a/result/server.js b/result/server.js index 8214b69..0d0c60c 100644 --- a/result/server.js +++ b/result/server.js @@ -1,25 +1,13 @@ var express = require('express'), async = require('async'), pg = require("pg"), - Pool = require("pg-pool"), cookieParser = require('cookie-parser'), - bodyParser = require('body-parser'), + bodyParser = require('body-parser'), methodOverride = require('method-override'), app = express(), server = require('http').Server(app), io = require('socket.io')(server); -var config = { - host: 'localhost', - user: 'postgres', - password: '', - database: 'postgres', - max: 10, // max number of clients in pool - idleTimeoutMillis: 1000, // close & remove clients which have been idle > 1 second -}; - -var client = new Pool(config) - io.set('transports', ['polling']); var port = process.env.PORT || 4000; @@ -35,6 +23,14 @@ io.sockets.on('connection', function (socket) { async.retry( {times: 1000, interval: 1000}, + function(callback) { + pg.connect('postgres://postgres@db/postgres', function(err, client, done) { + if (err) { + console.error("Waiting for db"); + } + callback(err, client); + }); + }, function(err, client) { if (err) { return console.err("Giving up"); @@ -49,13 +45,24 @@ function getVotes(client) { if (err) { console.error("Error performing query: " + err); } else { - var votes = result.rows[0].count + var votes = collectVotesFromResult(result); io.sockets.emit("scores", JSON.stringify(votes)); } + setTimeout(function() {getVotes(client) }, 1000); }); } +function collectVotesFromResult(result) { + var votes = {a: 0, b: 0}; + + result.rows.forEach(function (row) { + votes[row.vote] = parseInt(row.count); + }); + + return votes; +} + app.use(cookieParser()); app.use(bodyParser()); app.use(methodOverride('X-HTTP-Method-Override'));