Skip to content

Instantly share code, notes, and snippets.

@pataiadam
Created August 10, 2016 08:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pataiadam/601ca2748cee8c545dc1fa953d5c77ad to your computer and use it in GitHub Desktop.
Save pataiadam/601ca2748cee8c545dc1fa953d5c77ad to your computer and use it in GitHub Desktop.
node-pg
'use strict';
const pg = require('pg');
console.time('time');
var LOCK = `BEGIN; LOCK TABLE processed_files IN ACCESS EXCLUSIVE MODE;`;
var client1 = new pg.Client(`postgres://${process.env.POSTGRES_USER}:${process.env.POSTGRES_PASSWORD}@${process.env.POSTGRES_HOST}:${process.env.POSTGRES_PORT}/${process.env.POSTGRES_DB}`);
var client2 = new pg.Client(`postgres://${process.env.POSTGRES_USER}:${process.env.POSTGRES_PASSWORD}@${process.env.POSTGRES_HOST}:${process.env.POSTGRES_PORT}/${process.env.POSTGRES_DB}`);
client1.connect(function (err) {
console.timeEnd('time');
console.log('client1 connected to db\n');
console.timeEnd('time');
console.log('client1 try to lock table processed_files\n');
client1.query(LOCK, function (err, result) {
if (!!err) {
console.error(err)
}
console.timeEnd('time');
console.log('client1 LOCKed table processed_files\n');
});
});
client2.connect(function (err) {
console.timeEnd('time');
console.log('client2 connected to db\n');
setTimeout(function () {
console.timeEnd('time');
console.log('client2 try to lock table processed_files\n');
client2.query(LOCK, function (err, result) {
if (!!err) {
console.error(err)
}
console.timeEnd('time');
console.log('client2 LOCKed table processed_files\n');
});
setTimeout(function () {
client1.end();
console.timeEnd('time');
console.log('client1 disconnected from the server\n');
}, 1000);
}, 1000);
});
/*
time: 19ms
client1 connected to db
time: 20ms
client1 try to lock table processed_files
time: 21ms
client2 connected to db
time: 23ms
client1 LOCKed table processed_files
time: 1023ms
client2 try to lock table processed_files
time: 2028ms
client1 disconnected from the server
time: 2029ms
client2 LOCKed table processed_files
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment