Skip to content

Commit

Permalink
[#2102] Cannot read properties of undefined (reading 'accountId') (#2103
Browse files Browse the repository at this point in the history
)

* add a node to the selected nodes if only it hasn't been added already

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>

* remove creating function within loops

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>

* refactor code

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>

* fix

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>

* adding logger

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>

* formatting

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>

---------

Signed-off-by: svetoslav-nikol0v <svetoslav.nikolov@limechain.tech>
  • Loading branch information
svetoslav-nikol0v authored Jan 30, 2024
1 parent 27699cb commit cb01e23
Showing 1 changed file with 42 additions and 6 deletions.
48 changes: 42 additions & 6 deletions src/client/ManagedNetwork.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

import LedgerId from "../LedgerId.js";
import * as util from "../util.js";
import Logger from "../logger/Logger.js"; // eslint-disable-line
import { LogLevel } from "../exports.js";

/**
* @typedef {import("../channel/Channel.js").default} Channel
Expand Down Expand Up @@ -86,6 +88,14 @@ export default class ManagedNetwork {
this._nodeMaxReadmitPeriod = this._maxBackoff;

this._earliestReadmitTime = Date.now() + this._nodeMinReadmitPeriod;

/**
* Logger
*
* @external
* @type {Logger | null}
*/
this._logger = null;
}

/**
Expand Down Expand Up @@ -206,17 +216,32 @@ export default class ManagedNetwork {
this._removeDeadNodes();
this._readmitNodes();

/** @type {NetworkNodeT[]} */
this.setLogger(new Logger(LogLevel.Debug));

const nodes = [];
let healthyNodes = this._healthyNodes;
// Create a shallow for safe iteration
let healthyNodes = this._healthyNodes.slice();
count = Math.min(count, healthyNodes.length);

for (let i = 0; i < count; i++) {
// Select a random index
const nodeIndex = Math.floor(Math.random() * healthyNodes.length);
const selectedNode = healthyNodes[nodeIndex];

// Check if the node exists
if (!selectedNode) {
if (this._logger) {
this._logger.debug(
`Selected an undefined node at index ${nodeIndex}`,
);
}
break; // Break out of the loop if undefined node is selected
}

// Add the selected node in array for execution
nodes.push(selectedNode);
healthyNodes = healthyNodes.filter(
// eslint-disable-next-line ie11/no-loop-func
(node) => node.getKey() !== selectedNode.getKey(),
);
// Remove the selected node from array
healthyNodes.splice(nodeIndex, 1);
}

return nodes;
Expand Down Expand Up @@ -470,6 +495,17 @@ export default class ManagedNetwork {
node.decreaseBackoff();
}

/**
* Set logger
*
* @param {Logger} logger
* @returns {this}
*/
setLogger(logger) {
this._logger = logger;
return this;
}

close() {
for (const node of this._nodes) {
node.close();
Expand Down

0 comments on commit cb01e23

Please sign in to comment.