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
package-lock.json package-lock.json
config/config.json config/config.json
todo todo
sync.lock

31
bin/syncBlockchain.js

@ -1,4 +1,6 @@
var http = require('http'); var http = require('http');
const fs = require('fs-ext');
var models = require('../models'); var models = require('../models');
var rpcConfig = require('../config/config')['rpc']; var rpcConfig = require('../config/config')['rpc'];
@ -150,19 +152,38 @@ async function getSyncedHeight() {
return height; 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() { 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 { 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) { while (syncedHeight < currentHeight) {
syncedHeight = await syncNextBlock(syncedHeight); syncedHeight = await syncNextBlock(syncedHeight);
console.log('\x1b[36m%s\x1b[0m', 'syncedHeight: ', syncedHeight) console.log('\x1b[36m%s\x1b[0m', 'syncedHeight: ', syncedHeight)
} }
} catch (e) { } catch (e) {
console.log('=====', e); console.log(e);
} finally { } finally {
models.sequelize.close().then(() => process.exit(0)); models.sequelize.close().then(() => process.exit(0));
} }

3
package.json

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

Loading…
Cancel
Save