fix: 支持 L1 Kafka 集群域名解析
This commit is contained in:
@@ -827,8 +827,9 @@ test("Kafka Trace render returns a typed partial result when the captured end of
|
||||
filterRejectedCount: 0,
|
||||
completionReason: "timeout",
|
||||
reachedEndOffsets: false,
|
||||
endOffsetsAvailable: true,
|
||||
endOffsets: [{ partition: 0, startOffset: "0", endOffset: "2" }],
|
||||
endOffsetsAvailable: false,
|
||||
endOffsetsError: { code: "ENOTFOUND", message: "broker metadata hostname unresolved", valuesRedacted: true },
|
||||
endOffsets: [],
|
||||
completion: { reason: "timeout", complete: false, barrierReached: false, retentionStartVerified: true },
|
||||
lastScannedOffsets: [{ partition: 0, offset: "0" }]
|
||||
};
|
||||
@@ -836,6 +837,7 @@ test("Kafka Trace render returns a typed partial result when the captured end of
|
||||
});
|
||||
|
||||
assert.equal(result.exitCode, 2);
|
||||
assert.equal(result.payload.input.endOffsetsError.code, "ENOTFOUND");
|
||||
assert.equal(result.payload.ok, false);
|
||||
assert.equal(result.payload.status, "partial");
|
||||
assert.equal(result.payload.error.code, "source_scan_incomplete");
|
||||
|
||||
@@ -12,6 +12,7 @@ import {
|
||||
DEFAULT_AGENTRUN_EVENT_TOPIC,
|
||||
DEFAULT_HWLAB_DEBUG_EVENT_TOPIC,
|
||||
DEFAULT_HWLAB_EVENT_TOPIC,
|
||||
kafkaSocketFactory,
|
||||
projectAgentRunKafkaEventToHwlabEvent,
|
||||
projectAgentRunKafkaMessageToHwlabDebugEvent,
|
||||
queryKafkaEventStream
|
||||
@@ -427,6 +428,7 @@ export async function renderHwlabKafkaTrace(parsed: ParsedArgs, dependencies: Re
|
||||
completionReason: readResult.completionReason ?? null,
|
||||
reachedEndOffsets: readResult.reachedEndOffsets ?? false,
|
||||
endOffsetsAvailable: readResult.endOffsetsAvailable ?? false,
|
||||
endOffsetsError: readResult.endOffsetsError ?? null,
|
||||
endOffsets: readResult.endOffsets ?? [],
|
||||
lastScannedOffsets: readResult.lastScannedOffsets ?? [],
|
||||
sourceFile: readResult.sourceFile ?? null,
|
||||
@@ -598,6 +600,7 @@ export async function renderHwlabKafkaTrace(parsed: ParsedArgs, dependencies: Re
|
||||
completionReason: readResult.completionReason ?? (sourceMode === "jsonl" ? "file-end" : null),
|
||||
reachedEndOffsets: readResult.reachedEndOffsets ?? (sourceMode === "jsonl"),
|
||||
endOffsetsAvailable: readResult.endOffsetsAvailable ?? false,
|
||||
endOffsetsError: readResult.endOffsetsError ?? null,
|
||||
endOffsets: readResult.endOffsets ?? [],
|
||||
lastScannedOffsets: readResult.lastScannedOffsets ?? [],
|
||||
sourceFile: readResult.sourceFile ?? null,
|
||||
@@ -1661,7 +1664,7 @@ function kafkaHelp() {
|
||||
async function defaultKafkaReader(input: Record<string, any>) {
|
||||
return withBunKafkaTimerClamp(() => queryKafkaEventStream({
|
||||
...input,
|
||||
kafkaFactory(config: { brokers: string[]; clientId: string }) { return boundedKafka(config); }
|
||||
kafkaFactory(config: { brokers: string[]; clientId: string; dnsServers?: string[]; dnsSearchDomains?: string[] }) { return boundedKafka(config); }
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -1685,17 +1688,24 @@ async function withBunKafkaTimerClamp<T>(task: () => Promise<T>) {
|
||||
async function defaultProducerFactory({ env, clientId }: { env: EnvLike; clientId: string }) {
|
||||
const brokers = csv(env.HWLAB_KAFKA_BOOTSTRAP_SERVERS);
|
||||
if (brokers.length === 0) throw cliError("kafka_brokers_missing", "HWLAB_KAFKA_BOOTSTRAP_SERVERS is required for Kafka publish", { field: "HWLAB_KAFKA_BOOTSTRAP_SERVERS" });
|
||||
return boundedKafka({ clientId, brokers }).producer({ allowAutoTopicCreation: false });
|
||||
return boundedKafka({
|
||||
clientId,
|
||||
brokers,
|
||||
dnsServers: csv(env.HWLAB_KAFKA_DNS_SERVERS),
|
||||
dnsSearchDomains: csv(env.HWLAB_KAFKA_DNS_SEARCH_DOMAINS)
|
||||
}).producer({ allowAutoTopicCreation: false });
|
||||
}
|
||||
|
||||
function boundedKafka({ clientId, brokers }: { clientId: string; brokers: string[] }) {
|
||||
function boundedKafka({ clientId, brokers, dnsServers = [], dnsSearchDomains = [] }: { clientId: string; brokers: string[]; dnsServers?: string[]; dnsSearchDomains?: string[] }) {
|
||||
const socketFactory = kafkaSocketFactory(dnsServers, dnsSearchDomains);
|
||||
return new Kafka({
|
||||
clientId,
|
||||
brokers,
|
||||
logLevel: logLevel.NOTHING,
|
||||
connectionTimeout: 5000,
|
||||
requestTimeout: 10000,
|
||||
retry: { retries: 1, maxRetryTime: 10000 }
|
||||
retry: { retries: 1, maxRetryTime: 10000 },
|
||||
...(socketFactory ? { socketFactory } : {})
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user