Skip to content

Commit

Permalink
Resolves tulios#1607
Browse files Browse the repository at this point in the history
* Randomizing broker order
  • Loading branch information
gunnartangring committed Aug 16, 2023
1 parent 887288b commit 67066fe
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions src/cluster/connectionPoolBuilder.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const { KafkaJSConnectionError, KafkaJSNonRetriableError } = require('../errors')
const ConnectionPool = require('../network/connectionPool')
const shuffle = require('../utils/shuffle')

/**
* @typedef {Object} ConnectionPoolBuilder
Expand Down Expand Up @@ -38,6 +39,7 @@ module.exports = ({
reauthenticationThreshold,
}) => {
let index = 0
let randomBrokerList

const isValidBroker = broker => {
return broker && typeof broker === 'string' && broker.length > 0
Expand Down Expand Up @@ -88,9 +90,12 @@ module.exports = ({
return {
build: async ({ host, port, rack } = {}) => {
if (!host) {
const list = await getBrokers()
if (!randomBrokerList) {
const brokerList = await getBrokers()
randomBrokerList = shuffle(brokerList)
}

const randomBroker = list[index++ % list.length]
const randomBroker = randomBrokerList[index++ % randomBrokerList.length]

host = randomBroker.split(':')[0]
port = Number(randomBroker.split(':')[1])
Expand Down

0 comments on commit 67066fe

Please sign in to comment.