added code to prevent requests processing unless db sync is complete

This commit is contained in:
Abhishek Sinha 2019-06-29 16:29:34 +05:30
parent 22f083fa7a
commit a42c2a1a18

View File

@ -15346,20 +15346,27 @@
}); });
// Connect with backup supernodes // Connect with backup supernodes
wsUri.map((uri, index)=>{ if(localbitcoinplusplus.master_configurations.supernodesPubKeys
if(index>0 && index<=localbitcoinplusplus.master_configurations.MaxBackups
&& localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(idbData.myLocalFLOPublicKey)) { .includes(idbData.myLocalFLOPublicKey)) {
backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
backUpSupernodesWS[uri.trader_flo_address].connectWS(); wsUri.map((uri, index)=>{
}
if (index>0 && localbitcoinplusplus.master_configurations.supernodesPubKeys // Do not serve to any requests unless data is fully synced.
.includes(idbData.myLocalFLOPublicKey)) { localbitcoinplusplus.services[`can_serve_${uri.trader_flo_address}`] = false;
let dbname = `su_backup_${uri.trader_flo_address}`;
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname); if(index>0
BACKUP_DB[uri.trader_flo_address].createNewDB(); && index<=localbitcoinplusplus.master_configurations.MaxBackups) {
} backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
}); backUpSupernodesWS[uri.trader_flo_address].connectWS();
}
if (index>0) {
let dbname = `su_backup_${uri.trader_flo_address}`;
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname);
BACKUP_DB[uri.trader_flo_address].createNewDB();
}
});
}
localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS = wsUri[0].trader_flo_address; localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS = wsUri[0].trader_flo_address;
@ -15423,21 +15430,31 @@
localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS = wsUri[0].trader_flo_address; localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS = wsUri[0].trader_flo_address;
localbitcoinplusplus.services = {};
// Connect with backup supernodes // Connect with backup supernodes
wsUri.map((uri, index)=>{ if (localbitcoinplusplus.master_configurations.supernodesPubKeys
if(index>0 && index<=localbitcoinplusplus.master_configurations.MaxBackups
&& localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(idbData.myLocalFLOPublicKey)) { .includes(idbData.myLocalFLOPublicKey)) {
backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
backUpSupernodesWS[uri.trader_flo_address].connectWS(); wsUri.map((uri, index)=>{
}
if (index>0 && localbitcoinplusplus.master_configurations.supernodesPubKeys // Do not serve to any requests unless data is fully synced.
.includes(idbData.myLocalFLOPublicKey)) { localbitcoinplusplus.services[`can_serve_${uri.trader_flo_address}`] = false;
let dbname = `su_backup_${uri.trader_flo_address}`;
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname); if(index>0
BACKUP_DB[uri.trader_flo_address].createNewDB(); && index<=localbitcoinplusplus.master_configurations.MaxBackups
} ) {
}); backUpSupernodesWS[uri.trader_flo_address] = new backupSupernodesWebSocketObject(`ws://${uri.ip}:${uri.port}`);
backUpSupernodesWS[uri.trader_flo_address].connectWS();
}
if (index>0) {
let dbname = `su_backup_${uri.trader_flo_address}`;
BACKUP_DB[uri.trader_flo_address] = new newBackupDB(dbname);
BACKUP_DB[uri.trader_flo_address].createNewDB();
}
});
}
resolve(true); resolve(true);
}); });
@ -15752,6 +15769,19 @@
console.log(res_obj); console.log(res_obj);
} }
// Don't serve the request if data is not synced.
if (localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
if (typeof res_obj.globalParams.primarySupernode !== "string"
|| typeof localbitcoinplusplus.services[`can_serve_${res_obj.globalParams.primarySupernode}`] !== "boolean"
|| localbitcoinplusplus.services[`can_serve_${res_obj.globalParams.primarySupernode}`]==false
) {
showMessage(`INFO: You are not authorized to serve this request.`);
return false;
}
}
if(get_requester_supernode.length>0 && get_requester_supernode[0].data.id !== if(get_requester_supernode.length>0 && get_requester_supernode[0].data.id !==
localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS) { localbitcoinplusplus.MY_SUPERNODE_FLO_ADDRESS) {
processBackupUserOnMesssageRequest(response); processBackupUserOnMesssageRequest(response);
@ -16067,8 +16097,8 @@
retrieve_pvtkey_counter++; retrieve_pvtkey_counter++;
} }
} }
if (typeof localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY=='string' && if (typeof localbitcoinplusplus.wallets.MY_SUPERNODE_PRIVATE_KEY=='string'
localbitcoinplusplus.is_ui_loaded == false) { && localbitcoinplusplus.is_ui_loaded == false) {
loadExternalFiles(); loadExternalFiles();
dataBaseUIOperations(); dataBaseUIOperations();
return; return;
@ -17014,6 +17044,19 @@
return; return;
} }
// Don't serve the request if data is not synced.
if (localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
if (typeof res_obj.globalParams.primarySupernode !== "string"
|| typeof localbitcoinplusplus.services[`can_serve_${res_obj.globalParams.primarySupernode}`] !== "boolean"
|| localbitcoinplusplus.services[`can_serve_${res_obj.globalParams.primarySupernode}`]==false
) {
showMessage(`INFO: You are not authorized to serve this request.`);
return false;
}
}
if (res_obj.method !== "sync_primary_supernode_from_backup_supernode" if (res_obj.method !== "sync_primary_supernode_from_backup_supernode"
&& res_obj.method !== "sync_backup_supernode_from_backup_supernode" && res_obj.method !== "sync_backup_supernode_from_backup_supernode"
&& res_obj.method !== "link_My_Local_IP_To_My_Flo_Id" && res_obj.method !== "link_My_Local_IP_To_My_Flo_Id"
@ -20667,7 +20710,7 @@
console.log(addNewKNode); console.log(addNewKNode);
doSend(addNewKNode); doSend(addNewKNode);
}) });
} }
readDB('userPublicData', MY_LOCAL_FLO_ADDRESS).then(function ( readDB('userPublicData', MY_LOCAL_FLO_ADDRESS).then(function (
@ -20703,7 +20746,6 @@
} }
} }
// Show balances // Show balances
displayBalances(idbData.myLocalFLOAddress); displayBalances(idbData.myLocalFLOAddress);
@ -20731,8 +20773,7 @@
asset1) { asset1) {
localbitcoinplusplus.master_configurations.tradableAsset2.forEach( localbitcoinplusplus.master_configurations.tradableAsset2.forEach(
function (asset2) { function (asset2) {
RM_TRADE.resolve_current_crypto_price_in_fiat( RM_TRADE.resolve_current_crypto_price_in_fiat(asset1, asset2);
asset1, asset2);
}); });
}); });
} }
@ -20744,6 +20785,21 @@
// If connected with Backup Supernode, request it to sync data. // If connected with Backup Supernode, request it to sync data.
const closestSuList = await readAllDB('myClosestSupernodes'); const closestSuList = await readAllDB('myClosestSupernodes');
// If you are a supernode ask if you want to sync primary and secondary backup
if (localbitcoinplusplus.master_configurations.supernodesPubKeys
.includes(localbitcoinplusplus.wallets.my_local_flo_public_key)) {
const wannaSync = confirm(`Do you want to sync Primary and Backup Databases?`);
if (wannaSync==true) {
reactor.dispatchEvent('sync_primary_and_backup_db');
showMessage(`INFO: You need to update serve to true to start serving as Primary Supernode.`);
} else {
for (let w = 0; w <= localbitcoinplusplus.master_configurations.MaxBackups; w++) {
const element = closestSuList[w];
localbitcoinplusplus.services[`can_serve_${element.trader_flo_address}`] = true;
}
}
}
if (!closestSuList[0].is_live) { if (!closestSuList[0].is_live) {
const switchMyWS = new backupSupernodesWebSocketObject(); const switchMyWS = new backupSupernodesWebSocketObject();
const connectedWSServerFloId = await switchMyWS.getFloIdFromWSUrl(websocket.url); const connectedWSServerFloId = await switchMyWS.getFloIdFromWSUrl(websocket.url);