Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Orchestration functions live in one process-wide map; two Runtime objects that register the same name share one function

Aperta
#18 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
58/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
javascript

Direzione di ricerca

Start in lib/duroxide.js at the module-level map, registerOrchestration, registerOrchestrationVersioned, and createGenerator. Run the two-Runtime reproduction using separate SQLite stores and trace how each Runtime registers its create callback. Done means identical orchestration names can resolve to different functions per Runtime without changing activity behavior or causing cross-runtime replay failures.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug

Summary

registerOrchestration stores the generator function in a module-level Map, keyed by name or by name@version. Every Runtime in the process shares that map. If two Runtime objects register the same orchestration name, both run the function that was registered last.

Where

Reproduction

const pA = await SqliteProvider.open('sqlite:/tmp/a.db');
const pB = await SqliteProvider.open('sqlite:/tmp/b.db');
const rtA = new Runtime(pA);
const rtB = new Runtime(pB);
rtA.registerOrchestration('Greet', function* () { return 'from runtime A'; });
rtB.registerOrchestration('Greet', function* () { return 'from runtime B'; });
await rtA.start();
await rtB.start();

const cA = new Client(pA);
await cA.startOrchestration('on-a', 'Greet', null);
const a = await cA.waitForOrchestration('on-a', 10000);
// The instance is in store A. Only runtime A can run it.
// a.output is "from runtime B".

Activities do not have this problem. Each Runtime passes its activity callbacks to its own native runtime.

Impact

  • Two runtimes in one process cannot use the same orchestration name with different code. Examples are one runtime per store or per tenant, and two test fixtures in one test process. The wrong code runs, and there is no error.
  • If the two functions differ, a replay can also fail with a nondeterminism error.

Suggested fix

Keep the map per Runtime. For example, each Runtime registers its own create callback, and that callback looks up the function in the map of its Runtime.

Tracked in microsoft/duroxide#55.

Lingua principale
JavaScript
Stelle
36
Fork
20
Merge medio
20h 52m
PR unite (30g)
4

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di microsoft/duroxide-node

Tutte le issue di microsoft/duroxide-node

Issue simili

Altre issue su JavaScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.