additional lint-full

pull/1061/head
Ryan Tharp 5 years ago
parent 3f5a667989
commit 73b6401097

@ -136,7 +136,9 @@ class LokiMessageAPI {
} }
async refreshSendingSwarm(pubKey, timestamp) { async refreshSendingSwarm(pubKey, timestamp) {
const freshNodes = await lokiSnodeAPI.refreshSwarmNodesForPubKey(this.ourKey); const freshNodes = await lokiSnodeAPI.refreshSwarmNodesForPubKey(
this.ourKey
);
this.sendingData[timestamp].swarm = freshNodes; this.sendingData[timestamp].swarm = freshNodes;
this.sendingData[timestamp].hasFreshList = true; this.sendingData[timestamp].hasFreshList = true;
return true; return true;
@ -197,7 +199,9 @@ class LokiMessageAPI {
if (result === false) { if (result === false) {
// this means the node we asked for is likely down // this means the node we asked for is likely down
log.warn( log.warn(
`loki_message:::_sendToNode - Try #${successiveFailures}/${MAX_ACCEPTABLE_FAILURES} ${targetNode.ip}:${targetNode.port} failed` `loki_message:::_sendToNode - Try #${successiveFailures}/${MAX_ACCEPTABLE_FAILURES} ${
targetNode.ip
}:${targetNode.port} failed`
); );
successiveFailures += 1; successiveFailures += 1;
// eslint-disable-next-line no-continue // eslint-disable-next-line no-continue
@ -428,7 +432,7 @@ class LokiMessageAPI {
// floor or ceil probably doesn't matter, since it's likely always uneven // floor or ceil probably doesn't matter, since it's likely always uneven
const poolSize = Math.floor(nodes.length / numConnections, 10); const poolSize = Math.floor(nodes.length / numConnections, 10);
const pools = []; const pools = [];
while(nodes.length) { while (nodes.length) {
const poolList = nodes.splice(0, poolSize); const poolList = nodes.splice(0, poolSize);
const byAddressObj = poolList.reduce((result, node) => { const byAddressObj = poolList.reduce((result, node) => {
// eslint-disable-next-line no-param-reassign // eslint-disable-next-line no-param-reassign
@ -444,14 +448,16 @@ class LokiMessageAPI {
for (let i = 0; i < numConnections; i += 1) { for (let i = 0; i < numConnections; i += 1) {
promises.push( promises.push(
// eslint-disable-next-line more/no-then // eslint-disable-next-line more/no-then
this._openRetrieveConnection(pools[i], stopPolling, callback).then(() => { this._openRetrieveConnection(pools[i], stopPolling, callback).then(
unresolved -= 1; () => {
log.info( unresolved -= 1;
'loki_message:::startLongPolling - There are', log.info(
unresolved, 'loki_message:::startLongPolling - There are',
'open retrieve connections left' unresolved,
); 'open retrieve connections left'
}) );
}
)
); );
} }

@ -2,7 +2,7 @@
// was timeoutDelay // was timeoutDelay
const sleepFor = ms => new Promise(resolve => setTimeout(resolve, ms)); const sleepFor = ms => new Promise(resolve => setTimeout(resolve, ms));
let log let log;
function configure(options = {}) { function configure(options = {}) {
({ log } = options); ({ log } = options);
} }
@ -45,8 +45,10 @@ async function allowOnlyOneAtATime(name, process, timeout) {
let innerRetVal; let innerRetVal;
try { try {
innerRetVal = await process(); innerRetVal = await process();
} catch(e) { } catch (e) {
log.error(`loki_snodes:::allowOnlyOneAtATime - error ${e.code} ${e.message}`); log.error(
`loki_snodes:::allowOnlyOneAtATime - error ${e.code} ${e.message}`
);
throw e; throw e;
} }
// clear timeout timer // clear timeout timer
@ -74,7 +76,6 @@ async function allowOnlyOneAtATime(name, process, timeout) {
} }
function abortableIterator(array, iterator) { function abortableIterator(array, iterator) {
let abortIteration = false; let abortIteration = false;
// for the control promise // for the control promise
@ -93,22 +94,24 @@ function abortableIterator(array, iterator) {
const accum = []; const accum = [];
return { return {
start: async (serially) => { start: async serially => {
let item = destructableList.pop(); let item = destructableList.pop();
while(item && !abortIteration) { while (item && !abortIteration) {
// console.log('iterating on item', item); // console.log('iterating on item', item);
if (serially) { if (serially) {
try { try {
// eslint-disable-next-line no-await-in-loop // eslint-disable-next-line no-await-in-loop
accum.push(await iterator(item)); accum.push(await iterator(item));
} catch(e) { } catch (e) {
log.error(`loki_snodes:::abortableIterator - error ${e.code} ${e.message}`); log.error(
`loki_snodes:::abortableIterator - error ${e.code} ${e.message}`
);
throw e; throw e;
} }
} else { } else {
accum.push(iterator(item)); accum.push(iterator(item));
} }
item = destructableList.pop() item = destructableList.pop();
} }
return accum; return accum;
}, },
@ -120,7 +123,7 @@ function abortableIterator(array, iterator) {
*/ */
controlResolveFunctor(); controlResolveFunctor();
}, },
} };
} }
module.exports = { module.exports = {
@ -129,4 +132,4 @@ module.exports = {
allowOnlyOneAtATime, allowOnlyOneAtATime,
abortableIterator, abortableIterator,
firstTrue, firstTrue,
} };

@ -279,7 +279,6 @@ const sendToProxy = async (options = {}, targetNode, retryNumber = 0) => {
// relay is fine but destination is not good // relay is fine but destination is not good
if (response.status === 504) { if (response.status === 504) {
const pRetryNumber = retryNumber + 1; const pRetryNumber = retryNumber + 1;
if (pRetryNumber > 3) { if (pRetryNumber > 3) {
log.warn( log.warn(

@ -18,9 +18,9 @@ const RANDOM_SNODES_TO_USE_FOR_PUBKEY_SWARM = 3;
const SEED_NODE_RETRIES = 3; const SEED_NODE_RETRIES = 3;
const SNODE_VERSION_RETRIES = 3; const SNODE_VERSION_RETRIES = 3;
// findMatchingSnode(search)(current) // findMatchingSnode(search)(current)
const findMatchingSnode = search => current => current.ip === search.ip && current.port === search.port; const findMatchingSnode = search => current =>
current.ip === search.ip && current.port === search.port;
// just get the filtered list // just get the filtered list
async function tryGetSnodeListFromLokidSeednode( async function tryGetSnodeListFromLokidSeednode(
@ -384,8 +384,8 @@ class LokiSnodeAPI {
// not cacheable because we write to this.randomSnodePool elsewhere // not cacheable because we write to this.randomSnodePool elsewhere
getNodesMinVersion(minVersion) { getNodesMinVersion(minVersion) {
return this.randomSnodePool.filter(node => return this.randomSnodePool.filter(
node.version && semver.gt(node.version, minVersion) node => node.version && semver.gt(node.version, minVersion)
); );
} }
@ -397,7 +397,11 @@ class LokiSnodeAPI {
try { try {
await this.refreshRandomPool(); await this.refreshRandomPool();
} catch (e) { } catch (e) {
log.error(`loki_snode:::getRandomProxySnodeAddress - error ${e.code} ${e.message}`); log.error(
`loki_snode:::getRandomProxySnodeAddress - error ${e.code} ${
e.message
}`
);
throw e; throw e;
} }
if (this.randomSnodePool.length === 0) { if (this.randomSnodePool.length === 0) {
@ -407,7 +411,9 @@ class LokiSnodeAPI {
const goodPool = this.getNodesMinVersion('2.0.1'); const goodPool = this.getNodesMinVersion('2.0.1');
if (!goodPool.length) { if (!goodPool.length) {
// FIXME: retry // FIXME: retry
log.warn(`loki_snode:::getRandomProxySnodeAddress - no good versions yet`); log.warn(
`loki_snode:::getRandomProxySnodeAddress - no good versions yet`
);
return false; return false;
} }
// FIXME: _.sample? // FIXME: _.sample?
@ -430,14 +436,18 @@ class LokiSnodeAPI {
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1'; process.env.NODE_TLS_REJECT_UNAUTHORIZED = '1';
const data = await result.json(); const data = await result.json();
if (data.version) { if (data.version) {
const foundNodeIdx = this.randomSnodePool.findIndex(findMatchingSnode(node)); const foundNodeIdx = this.randomSnodePool.findIndex(
findMatchingSnode(node)
);
if (foundNodeIdx !== -1) { if (foundNodeIdx !== -1) {
this.randomSnodePool[foundNodeIdx].version = data.version; this.randomSnodePool[foundNodeIdx].version = data.version;
} else { } else {
// maybe already marked bad... // maybe already marked bad...
log.warn(`loki_snode:::_getVersion - can't find ${node.ip}:${ log.warn(
node.port `loki_snode:::_getVersion - can't find ${node.ip}:${
} in randomSnodePool`); node.port
} in randomSnodePool`
);
} }
} }
return data.version; return data.version;
@ -465,11 +475,15 @@ class LokiSnodeAPI {
`on ${node.ip}:${node.port} retrying in 1s` `on ${node.ip}:${node.port} retrying in 1s`
); );
await primitives.sleepFor(1000); await primitives.sleepFor(1000);
await this._getVersion(node, {...options, retries: retries + 1 }); await this._getVersion(node, { ...options, retries: retries + 1 });
} else { } else {
this.markRandomNodeUnreachable(node); this.markRandomNodeUnreachable(node);
const randomNodesLeft = this.getRandomPoolLength(); const randomNodesLeft = this.getRandomPoolLength();
log.warn(`loki_snode:::_getVersion - failing to get version for ${node.ip}:${node.port}, removing, leaving ${randomNodesLeft} in the randomPool`) log.warn(
`loki_snode:::_getVersion - failing to get version for ${node.ip}:${
node.port
}, removing, leaving ${randomNodesLeft} in the randomPool`
);
} }
// maybe throw? // maybe throw?
return false; return false;
@ -483,11 +497,13 @@ class LokiSnodeAPI {
// const verionStart = Date.now(); // const verionStart = Date.now();
// const total = this.randomSnodePool.length; // const total = this.randomSnodePool.length;
// const noticeEvery = parseInt(total / 10, 10); // const noticeEvery = parseInt(total / 10, 10);
const loop = primitives.abortableIterator(this.randomSnodePool, async (node) => { const loop = primitives.abortableIterator(
// count += 1; this.randomSnodePool,
try { async node => {
await this._getVersion(node); // count += 1;
/* try {
await this._getVersion(node);
/*
if (count % noticeEvery === 0) { if (count % noticeEvery === 0) {
// give stats // give stats
const diff = Date.now() - verionStart; const diff = Date.now() - verionStart;
@ -502,11 +518,16 @@ class LokiSnodeAPI {
}); });
} }
*/ */
} catch (e) { } catch (e) {
log.error('loki_snode:::_getAllVerionsForRandomSnodePool - error', e.code, e.message); log.error(
throw(e); 'loki_snode:::_getAllVerionsForRandomSnodePool - error',
e.code,
e.message
);
throw e;
}
} }
}); );
// make abortable accessible outside this scope // make abortable accessible outside this scope
this.stopGetAllVersionPromiseControl = loop.stop; this.stopGetAllVersionPromiseControl = loop.stop;
await loop.start(true); await loop.start(true);
@ -542,11 +563,7 @@ class LokiSnodeAPI {
// start polling versions but no need to await it // start polling versions but no need to await it
this._getAllVerionsForRandomSnodePool(); this._getAllVerionsForRandomSnodePool();
} catch (e) { } catch (e) {
log.warn( log.warn('loki_snodes:::refreshRandomPool - error', e.code, e.message);
'loki_snodes:::refreshRandomPool - error',
e.code,
e.message
);
/* /*
log.error( log.error(
'loki_snodes:::refreshRandomPoolPromise - Giving up trying to contact seed node' 'loki_snodes:::refreshRandomPoolPromise - Giving up trying to contact seed node'
@ -592,9 +609,9 @@ class LokiSnodeAPI {
} }
try { try {
await conversation.updateSwarmNodes(filteredNodes); await conversation.updateSwarmNodes(filteredNodes);
} catch(e) { } catch (e) {
log.error(`loki_snodes:::unreachableNode - error ${e.code} ${e.message}`); log.error(`loki_snodes:::unreachableNode - error ${e.code} ${e.message}`);
throw(e); throw e;
} }
return filteredNodes; return filteredNodes;
} }
@ -605,7 +622,11 @@ class LokiSnodeAPI {
async updateLastHash(snodeAddress, hash, expiresAt) { async updateLastHash(snodeAddress, hash, expiresAt) {
// FIXME: handle rejections // FIXME: handle rejections
await window.Signal.Data.updateLastHash({ snode: snodeAddress, hash, expiresAt }); await window.Signal.Data.updateLastHash({
snode: snodeAddress,
hash,
expiresAt,
});
} }
// called by loki_message:::sendMessage & loki_message:::startLongPolling // called by loki_message:::sendMessage & loki_message:::startLongPolling
@ -615,18 +636,24 @@ class LokiSnodeAPI {
const swarmNodes = [...conversation.get('swarmNodes')]; const swarmNodes = [...conversation.get('swarmNodes')];
// always? include lashHash // always? include lashHash
await Promise.all(Object.keys(swarmNodes).map(async j => { await Promise.all(
const node = swarmNodes[j]; Object.keys(swarmNodes).map(async j => {
// FIXME make a batch function call const node = swarmNodes[j];
const lastHash = await window.Signal.Data.getLastHashBySnode( // FIXME make a batch function call
node.address const lastHash = await window.Signal.Data.getLastHashBySnode(
); node.address
log.debug(`loki_snode:::getSwarmNodesForPubKey - ${j} ${node.ip}:${node.port} hash ${lastHash} for ${node.address}`); );
swarmNodes[j] = { log.debug(
...node, `loki_snode:::getSwarmNodesForPubKey - ${j} ${node.ip}:${
lastHash, node.port
}; } hash ${lastHash} for ${node.address}`
})); );
swarmNodes[j] = {
...node,
lastHash,
};
})
);
return swarmNodes; return swarmNodes;
} catch (e) { } catch (e) {
@ -643,7 +670,9 @@ class LokiSnodeAPI {
await conversation.updateSwarmNodes(filteredNodes); await conversation.updateSwarmNodes(filteredNodes);
return filteredNodes; return filteredNodes;
} catch (e) { } catch (e) {
log.error(`loki_snodes:::updateSwarmNodes - error ${e.code} ${e.message}`); log.error(
`loki_snodes:::updateSwarmNodes - error ${e.code} ${e.message}`
);
throw new window.textsecure.ReplayableError({ throw new window.textsecure.ReplayableError({
message: 'Could not get conversation', message: 'Could not get conversation',
}); });

Loading…
Cancel
Save