Per l'OP sembrava apprezzare il commento, l'ho messo in una risposta nella speranza che possa aiutare gli altri utenti.
Mi sembra che il problema sia dovuto al fatto che molti descrittori sono esauriti chiamando lo writeFileSync
. Anche il link pubblicato nella domanda sembra confermare l'idea.
In realtà, sto ancora cercando di capire se esiste un modo per sapere quando la scrittura è effettivamente finita sotto il cofano, non solo dal punto di vista di nodejs. Forse il parametro this può essere d'aiuto, ma suppongo che soffra dello stesso problema.
In ogni caso, è possibile aggirare il problema implementando un pool di scrittori con una coda in cui inserire le proprie richieste di scrittura.
Il pro è che il numero di descrittori aperti può essere tenuto sotto controllo. Non esattamente, anzi, a causa del problema menzionato nel link pubblicato dall'OP, ma ovviamente si può evitare di utilizzare tutte le risorse di un sistema.
Dall'altro lato, sfortunatamente, c'è il problema che questa soluzione tende ad occupare molta più memoria (perché in effetti uno sta parcheggiando i suoi documenti mentre aspetta un lavoratore disponibile).
Ovviamente, potrebbe essere una soluzione adatta per scoppio di richieste separate nel tempo, ma forse non si adatta bene a carichi fissi costanti nel tempo.
Cosa consideri "corretto"? – Soren
Inoltre, non è chiaro se si sta chiedendo quale sia la causa del proprio errore o come si effettuano le operazioni di sincronizzazione sul file system - è improbabile che siano correlate. – Soren
Perché non vuoi utilizzare i callback? Effettuare un'operazione sincrona bloccherà il ciclo degli eventi e sarebbe particolarmente negativo dato che la tua app è sottoposta a un carico pesante. –