apache / apache/pulsar-client-node

Improve Timing of Promise "then"

Offen
#19 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
triage/week-16
Vorherrschende Sprache
C++
Sterne
164
Forks
98
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

Currently, To measure latency of sending messages, asynchronous processing using Nodejs [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) like following code:

```
const results = [];
for (let mi = 0; mi < numOfMessages; mi += 1) {
const startSendTimeMilliSeconds = performance.now();
results.push(producer.send({
data: message,
}).then(() => {
// add latency
histogram.recordValue((performance.now() - startSendTimeMilliSeconds));
}));
}
await Promise.all(results); // wait until all messages are sent.
```
https://github.com/apache/pulsar-client-node/blob/master/perf/perf_producer.js#L88-L98

This code creates histogram about latency of sending messages.
However, all `then()` of `Promise` in `results` start after `await Promise.all(results)`.
So, We cannot get accurate histogram.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne mit perf/perf_producer.js ungefähr in den Zeilen 88–98 und überprüfe, wie die Promises von producer.send() und Promise.all() verwendet werden. Überprüfe, wann jeder then()-Callback relativ zu Promise.all() ausgeführt wird, passe dann das Latenzhistogramm so an, dass es das tatsächliche Timing des Nachrichtenversands widerspiegelt, und bestätige, dass das Performance-Skript weiterhin korrekt abgeschlossen wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
javascript, node.js
Bereich
performance
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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