Skip to content

Commit c7135f7

Browse files
authored
Merge pull request #1408 from arszen123/fix/consumer-connection-issue
Fix consumer connection issue
2 parents 427bcf9 + dc758a7 commit c7135f7

File tree

4 files changed

+21
-3
lines changed

4 files changed

+21
-3
lines changed

src/consumer/fetchManager.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ const seq = require('../utils/seq')
22
const createFetcher = require('./fetcher')
33
const createWorker = require('./worker')
44
const createWorkerQueue = require('./workerQueue')
5-
const { KafkaJSFetcherRebalanceError } = require('../errors')
5+
const { KafkaJSFetcherRebalanceError, KafkaJSNoBrokerAvailableError } = require('../errors')
66

77
/** @typedef {ReturnType<typeof createFetchManager>} FetchManager */
88

@@ -34,6 +34,10 @@ const createFetchManager = ({
3434
const nodeIds = getNodeIds()
3535
const partitionAssignments = new Map()
3636

37+
if (nodeIds.length === 0) {
38+
throw new KafkaJSNoBrokerAvailableError()
39+
}
40+
3741
const validateShouldRebalance = () => {
3842
const current = getNodeIds()
3943
const hasChanged =

src/consumer/fetchManager.spec.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ const createFetchManager = require('./fetchManager')
44
const Batch = require('./batch')
55
const { newLogger } = require('testHelpers')
66
const waitFor = require('../utils/waitFor')
7-
const { KafkaJSNonRetriableError } = require('../errors')
7+
const { KafkaJSNonRetriableError, KafkaJSNoBrokerAvailableError } = require('../errors')
88

99
describe('FetchManager', () => {
1010
let fetchManager, fetch, handler, getNodeIds, concurrency, batchSize
@@ -94,4 +94,10 @@ describe('FetchManager', () => {
9494
await expect(fetchManagerPromise).rejects.toThrow('Node not found')
9595
})
9696
})
97+
98+
it('should throw an error when there are no brokers available', async () => {
99+
getNodeIds.mockImplementation(() => seq(0))
100+
101+
await expect(fetchManager.start()).rejects.toThrowError(new KafkaJSNoBrokerAvailableError())
102+
})
97103
})

src/consumer/runner.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ module.exports = class Runner extends EventEmitter {
144144
return bail(e)
145145
}
146146

147-
if (e.name === 'KafkaJSConnectionError') {
147+
if (e.name === 'KafkaJSNoBrokerAvailableError') {
148148
return bail(e)
149149
}
150150

src/errors.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,13 @@ class KafkaJSAggregateError extends Error {
258258

259259
class KafkaJSFetcherRebalanceError extends Error {}
260260

261+
class KafkaJSNoBrokerAvailableError extends KafkaJSError {
262+
constructor() {
263+
super('No broker available')
264+
this.name = 'KafkaJSNoBrokerAvailableError'
265+
}
266+
}
267+
261268
const isRebalancing = e =>
262269
e.type === 'REBALANCE_IN_PROGRESS' ||
263270
e.type === 'NOT_COORDINATOR_FOR_GROUP' ||
@@ -295,6 +302,7 @@ module.exports = {
295302
KafkaJSCreateTopicError,
296303
KafkaJSAggregateError,
297304
KafkaJSFetcherRebalanceError,
305+
KafkaJSNoBrokerAvailableError,
298306
KafkaJSAlterPartitionReassignmentsError,
299307
isRebalancing,
300308
isKafkaJSError,

0 commit comments

Comments
 (0)