try locking txs table
This commit is contained in:
parent
71e5ec64f5
commit
5cfc2ba491
4 changed files with 61 additions and 3 deletions
52
dev/double-spend-scenario.js
Normal file
52
dev/double-spend-scenario.js
Normal 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)
|
||||
})
|
||||
*/
|
||||
|
|
@ -121,7 +121,7 @@ function loadOrConfigPlugin(pluginHandle, pluginType, currency,
|
|||
pluginHandle = loadPlugin(currentName, pluginConfig);
|
||||
currentlyUsedPlugins[pluginType] = currentName
|
||||
logger.debug('plugin(%s) loaded: %s', pluginType, pluginHandle.NAME ||
|
||||
currentName);
|
||||
currentName);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue