try locking txs table

This commit is contained in:
Josh Harvey 2016-02-06 22:57:49 +02:00
parent 71e5ec64f5
commit 5cfc2ba491
4 changed files with 61 additions and 3 deletions

View file

@ -0,0 +1,52 @@
var db = require('../lib/postgresql_interface')
var connectionString = 'postgres://lamassu:lamassu@localhost/lamassu'
db.init(connectionString)
var session = {
id: '6ede611c-cd03-11e5-88ee-2b5fcfdb0bc2',
fingerprint: 'xx:xx'
}
var tx = {
fiat: 40,
satoshis: 6980000,
toAddress: '1xxx',
currencyCode: 'CAD',
incoming: false
}
var tx2 = {
fiat: 0,
satoshis: 6980000,
toAddress: '1xxx',
currencyCode: 'CAD',
incoming: false
}
db.addOutgoingTx(session, tx, function (err, res) {
console.log('DEBUG1')
console.log(err)
console.log(res)
})
setTimeout(function () {
db.addOutgoingTx(session, tx2, function (err, res) {
console.log('DEBUG2')
console.log(err)
console.log(res)
})
}, 1000)
var bills = {
uuid: 'c630338c-cd03-11e5-a9df-dbc9be2e9fbb',
currency: 'CAD',
toAddress: '1xxx',
deviceTime: Date.now(),
satoshis: 6980000,
fiat: 40
}
/*
db.recordBill(session, bills, function (err) {
console.log(err)
})
*/

View file

@ -311,6 +311,8 @@ exports.trade = function trade(session, rawTrade, cb) {
currencyCode: rawTrade.currency
};
console.log('****************** DEBUG2 *****************')
console.log(db.addOutgoingPending)
async.parallel([
async.apply(db.addOutgoingPending, session, tx.currencyCode, tx.toAddress),
async.apply(db.recordBill, session, rawTrade)

View file

@ -181,6 +181,7 @@ function billsAndTxs(client, session, cb) {
}
function computeSendAmount(tx, totals) {
console.log('DEBUG10')
var fiatRemaining = (tx.fiat || totals.billsFiat) - totals.txFiat;
var satoshisRemaining = (tx.satoshis || totals.billsSatoshis) -
totals.txSatoshis;
@ -303,6 +304,8 @@ function insertTx(client, session, incoming, tx, satoshis, fiat, stage,
tx.error
];
console.log('DEBUG11')
query(client, getInsertQuery('transactions', fields, true), values,
function(err, results) {
if (err) return cb(err);
@ -347,6 +350,7 @@ exports.addOutgoingTx = function addOutgoingTx(session, tx, cb) {
if (cerr) return cb(cerr);
async.series([
async.apply(silentQuery, client, 'BEGIN'),
async.apply(silentQuery, client, 'LOCK TABLE transactions NOWAIT'),
async.apply(insertOutgoingCompleteTx, client, session, tx),
async.apply(removePendingTx, client, session),
async.apply(buildOutgoingTx, client, session, tx)
@ -357,7 +361,7 @@ exports.addOutgoingTx = function addOutgoingTx(session, tx, cb) {
}
silentQuery(client, 'COMMIT', [], function() {
done();
var toSend = results[3];
var toSend = results[4];
cb(null, toSend);
});
});

View file

@ -192,7 +192,7 @@ describe('Plugins', function() {
describe('Send Bitcoins', function() {
before(function() {
plugins.trade({currency: 'USD', satoshis: 1e7}, db.FINGERPRINT_NEW);
plugins.trade('123', {currency: 'USD', satoshis: 1e7, toAddress: '1xxx'}, function() {});
});
it('should send bitcoins successfully', function(done) {