Journey of a Software Engineer and clumsy Father 🤪
Nothing here yet.
No blogs yet.
Thanks for the article, it will save me a lot of time next week! 😅 I have some concerns. 1/ For the createProcessTicker method: try { for (const record of records) { await processRecord(record); await cursorRepo.setPosition(record.id); processedRecords++; } } catch (error) { logger.error('Could not process record', { processName, record, error, }); } finally { await cursorRepo.unlockCursor(); } Should error be forwarded in the catch block? Otherwise, the cursor process won't terminate if failed to process a record. 2/ For this termination flow } catch (error) { logger.critical('Terminating server: cursor process error', { processName: props.processName, error, }); // we use structured logging await lifecycle.close(); process.exit(1); } When a node is terminated and the cursor lock is released, will the terminated process propagate to the remaining nodes? I guess, there will be the scenario that container managers (CR, K8S) keep initialize new nodes to replace terminated nodes until the error is fixed.