Browse Source

Acquire lock before running syncBlockchain

master
xcps 6 years ago committed by R4SAS
parent
commit
906b94061f
  1. 1
      .gitignore
  2. 31
      bin/syncBlockchain.js
  3. 3
      package.json

1
.gitignore vendored

@ -2,3 +2,4 @@ node_modules @@ -2,3 +2,4 @@ node_modules
package-lock.json
config/config.json
todo
sync.lock

31
bin/syncBlockchain.js

@ -1,4 +1,6 @@ @@ -1,4 +1,6 @@
var http = require('http');
const fs = require('fs-ext');
var models = require('../models');
var rpcConfig = require('../config/config')['rpc'];
@ -150,19 +152,38 @@ async function getSyncedHeight() { @@ -150,19 +152,38 @@ async function getSyncedHeight() {
return height;
}
async function acquireLock() {
let fd = fs.openSync('sync.lock', 'w');
try {
fs.flockSync(fd, 'exnb');
} catch(ex) {
if (ex.code === 'EAGAIN') {
console.log('Synchronization is already running');
} else {
console.log('Could\'nt lock file', ex);
}
throw ex;
}
}
async function syncBlockchain() {
let syncedHeight = await getSyncedHeight();
console.log('\x1b[36m%s\x1b[0m', 'syncedHeight is', syncedHeight);
let currentHeight = await getCurrentHeight();
console.log('\x1b[36m%s\x1b[0m', 'currentHeight is', currentHeight);
try {
await acquireLock();
let syncedHeight = await getSyncedHeight();
console.log('\x1b[36m%s\x1b[0m', 'syncedHeight is', syncedHeight);
let currentHeight = await getCurrentHeight();
console.log('\x1b[36m%s\x1b[0m', 'currentHeight is', currentHeight);
while (syncedHeight < currentHeight) {
syncedHeight = await syncNextBlock(syncedHeight);
console.log('\x1b[36m%s\x1b[0m', 'syncedHeight: ', syncedHeight)
}
} catch (e) {
console.log('=====', e);
console.log(e);
} finally {
models.sequelize.close().then(() => process.exit(0));
}

3
package.json

@ -21,8 +21,9 @@ @@ -21,8 +21,9 @@
"body-parser": "~1.18.2",
"cookie-parser": "~1.4.3",
"debug": "~2.6.9",
"express": "~4.15.5",
"express": "^4.16.3",
"forever": "^0.15.3",
"fs-ext": "^1.2.1",
"morgan": "~1.9.0",
"mysql": "^2.15.0",
"mysql2": "^1.5.1",

Loading…
Cancel
Save