<commit_before>/**
 * file: 轮询周期内自动动态更新节点的权重信息
 * 单个轮询周期结束后，执行一个性能评价回调，该回调返回会对池子内各个节点进行性能评价并
 * 返回一个新的池子，新的池子里包含这些节点并带有最新的weight属性。
 *
 * 这个性能评价器，不仅能用到这个
 */

var inherits = require('util').inherits;
var WeightedRoundRobinEngine = require('./WeightedRoundRobinEngine');
var resourceMeter = require('resource-meter');
var debug = require('debug')('awesomeBalancer:dynamic');

module.exports = DynamicWeightedEngine;

function DynamicWeightedEngine(pool) {
    if (!(this instanceof DynamicWeightedEngine)) {
        return new DynamicWeightedEngine(pool);
    }
    this._runtimePool = pool; // 初始化runtimePool, 此时runtimePool是带weight权重的哦。
    WeightedRoundRobinEngine.call(this, pool); // 处理后this._pool里就不带权重了。

    // 启动定时器，实时更新一个runtimePool. （搞个定时器就为了让下文中的pick能变成同步...）

    var me = this;
    setInterval(function () {
        debug('哥发起了实时计算权重的请求，哥传入的参数为： ' + me._runtimePool);
        var resultPromise = resourceMeter.meter(me._runtimePool);
        resultPromise.then(function (resultNodes) {
            // 剔除weight为0的元素
            resultNodes = resultNodes.filter(function (item) {<commit_msg>fix bug<commit_after>/**
 * file: 轮询周期内自动动态更新节点的权重信息
 * 单个轮询周期结束后，执行一个性能评价回调，该回调返回会对池子内各个节点进行性能评价并
 * 返回一个新的池子，新的池子里包含这些节点并带有最新的weight属性。
 *
 * 这个性能评价器，不仅能用到这个
 */

var inherits = require('util').inherits;
var WeightedRoundRobinEngine = require('./WeightedRoundRobinEngine');
var resourceMeter = require('resource-meter');
var debug = require('debug')('awesomeBalancer:dynamic');

module.exports = DynamicWeightedEngine;

function DynamicWeightedEngine(pool) {
    if (!(this instanceof DynamicWeightedEngine)) {
        return new DynamicWeightedEngine(pool);
    }
    this._runtimePool = pool; // 初始化runtimePool, 此时runtimePool是带weight权重的哦。
    WeightedRoundRobinEngine.call(this, pool); // 处理后this._pool里就不带权重了。

    // 启动定时器，实时更新一个runtimePool. （搞个定时器就为了让下文中的pick能变成同步...）

    var me = this;
    setInterval(function () {
        debug('哥发起了实时计算权重的请求，哥传入的参数为：');
        debug(me._runtimePool);
        var resultPromise = resourceMeter.meter(me._runtimePool);
        resultPromise.then(function (resultNodes) {
            // 剔除weight为0的元素
            resultNodes = resultNodes.filter(function (item) {
{'fraction_non_alphanumeric': 0.11588954277953825, 'fraction_numerical': 0.0009053870529651426, 'mean_word_length': 4.364077669902913, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1180668', 'n_tokens_mistral': 921, 'n_tokens_neox': 988, 'n_words': 107}