airqo-platform / airqo-platform/AirQo-api

Bug: NATS broker publishMessage treats synchronous publish() as a Promise

Offen
#4,718 0 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @Baalmart Auf GitHub ansehen
Vorherrschende Sprache
JavaScript
Sterne
26
Forks
24
Ø Merge
5 Std. 36 Min.
Gemergte PRs (30 T.)
81

Beschreibung

## Issue Description

In the NATS broker implementation, there's a critical bug in the `publishMessage` method where `client.publish()` is treated as a Promise in a `Promise.race()` construction.

**File:** `src/auth-service/utils/messaging/brokers/nats-broker.js`

**Problem:**
The `@nats/js`'s `publish()` method returns `void` (not a Promise). When treating it as a promise with `Promise.race()`, `publishPromise` resolves immediately as `undefined`, and the timeout branch will always win – raising a false "timed-out" error on every call.

**Impact:**
This will mark the broker as unhealthy and trigger unnecessary fail-over to other message brokers, degrading performance and potentially causing message delivery issues.

## Proposed Solutions

Either:

1. Await the *flush* operation instead:
```js
this.client.publish(topic, payloadBuf);
await this.client.flush();
```

2. Remove the `Promise.race` and rely on the library's internal back-pressure.

## References
- Discovered in PR review: https://github.com/airqo-platform/AirQo-api/pull/4716#discussion_r2051508781

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.