Created
August 10, 2016 08:43
-
-
Save pataiadam/601ca2748cee8c545dc1fa953d5c77ad to your computer and use it in GitHub Desktop.
node-pg
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'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