Reshare ids when node list updated

- Reconstruct shares for all active ids when node list is updated via blockchain
This commit is contained in:
sairajzero 2023-01-01 21:20:02 +05:30
parent 7a99a44265
commit 9686f29f8e
3 changed files with 21 additions and 3 deletions

View File

@ -245,9 +245,21 @@ function updateMaster(floID) {
connectToMaster(); connectToMaster();
} }
function reconstructAllActiveShares() {
if (_mode !== MASTER_MODE)
return console.debug("Not serving as master");
console.debug("Reconstructing shares for all active IDs")
let group_list = keys.sink_groups.list;
group_list.forEach(g => {
//active ids also ignore ids that are in queue for reconstructing shares
let active_ids = keys.sink_chest.active_list(g);
active_ids.forEach(id => reconstructShares(g, id));
});
}
function reconstructShares(group, sinkID) { function reconstructShares(group, sinkID) {
if (_mode !== MASTER_MODE) if (_mode !== MASTER_MODE)
return console.warn("Not serving as master"); return console.warn(`Not serving as master, but reconstruct-shares is called for ${sinkID}(${group})`);
keys.sink_chest.set_id(group, sinkID, null); keys.sink_chest.set_id(group, sinkID, null);
collectAndCall(group, sinkID, sinkKey => sendSharesToNodes(sinkID, group, generateShares(sinkKey))); collectAndCall(group, sinkID, sinkKey => sendSharesToNodes(sinkID, group, generateShares(sinkKey)));
} }
@ -460,6 +472,7 @@ function initProcess(app) {
module.exports = { module.exports = {
init: initProcess, init: initProcess,
collectAndCall, collectAndCall,
reconstructAllActiveShares,
sink: { sink: {
generate: generateSink, generate: generateSink,
reshare: reshareSink, reshare: reshareSink,

View File

@ -345,6 +345,9 @@ const sink_groups = {
get CONVERT() { return "convert" }, get CONVERT() { return "convert" },
get BLOCKCHAIN_BONDS() { return "blockchain_bonds" }, get BLOCKCHAIN_BONDS() { return "blockchain_bonds" },
get BOBS_FUND() { return "bobs_fund" }, get BOBS_FUND() { return "bobs_fund" },
get list() { //total list
return [this.EXCHANGE, this.CONVERT, this.BLOCKCHAIN_BONDS, this.BOBS_FUND]
},
get initial_list() { //list to generate when starting exchange get initial_list() { //list to generate when starting exchange
return [this.EXCHANGE, this.CONVERT] return [this.EXCHANGE, this.CONVERT]
}, },

View File

@ -27,8 +27,10 @@ var app;
function refreshData(startup = false) { function refreshData(startup = false) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
refreshDataFromBlockchain().then(result => { refreshDataFromBlockchain().then(changes => {
loadDataFromDB(result, startup).then(_ => { loadDataFromDB(changes, startup).then(_ => {
if (!startup && changes.nodes)
backup.reconstructAllActiveShares();
app.refreshData(backup.nodeList); app.refreshData(backup.nodeList);
resolve("Data refresh successful") resolve("Data refresh successful")
}).catch(error => reject(error)) }).catch(error => reject(error))