@machinemetrics/mm-erp-sdk 0.1.7-beta.0 → 0.1.7-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3607,6 +3607,8 @@ const runDataSyncService = async (connectorPath) => {
3607
3607
  const bree = new Bree({
3608
3608
  root: jobsPath,
3609
3609
  logger,
3610
+ // Enable worker metadata for debugging
3611
+ outputWorkerMetadata: true,
3610
3612
  worker: {
3611
3613
  env: {
3612
3614
  CONNECTOR_PATH: connectorPath,
@@ -3621,7 +3623,12 @@ const runDataSyncService = async (connectorPath) => {
3621
3623
  CACHE_TTL: process.env.CACHE_TTL,
3622
3624
  // Pass through all other environment variables that might be needed
3623
3625
  ...process.env
3624
- }
3626
+ },
3627
+ // Add worker options for better isolation and cleanup
3628
+ execArgv: [
3629
+ "--expose-gc"
3630
+ // Allow manual garbage collection
3631
+ ]
3625
3632
  },
3626
3633
  jobs: [
3627
3634
  // {
@@ -3630,20 +3637,25 @@ const runDataSyncService = async (connectorPath) => {
3630
3637
  {
3631
3638
  name: "from-erp",
3632
3639
  timeout: "10s",
3633
- interval: config2.fromErpInterval
3640
+ interval: config2.fromErpInterval,
3641
+ // Ensure worker terminates completely after execution
3642
+ closeWorkerAfterMs: 1e3
3634
3643
  },
3635
3644
  {
3636
3645
  name: "to-erp",
3637
3646
  //timeout: '3s', // Use timeout during development to see the job in action quickly
3638
- interval: config2.toErpInterval
3647
+ interval: config2.toErpInterval,
3648
+ closeWorkerAfterMs: 1e3
3639
3649
  },
3640
3650
  {
3641
3651
  name: "retry-failed-labor-tickets",
3642
- interval: config2.retryLaborTicketsInterval
3652
+ interval: config2.retryLaborTicketsInterval,
3653
+ closeWorkerAfterMs: 1e3
3643
3654
  },
3644
3655
  {
3645
3656
  name: "clean-up-expired-cache",
3646
- interval: config2.cacheExpirationCheckInterval
3657
+ interval: config2.cacheExpirationCheckInterval,
3658
+ closeWorkerAfterMs: 1e3
3647
3659
  }
3648
3660
  ]
3649
3661
  });
@@ -3653,14 +3665,34 @@ const runDataSyncService = async (connectorPath) => {
3653
3665
  const jobsConfig = bree.config.jobs.map((job) => ({
3654
3666
  name: job.name,
3655
3667
  interval: job.interval,
3656
- timeout: job.timeout
3668
+ timeout: job.timeout,
3669
+ closeWorkerAfterMs: job.closeWorkerAfterMs
3657
3670
  }));
3658
3671
  logger.info("JOBS CONFIGURATION:", { jobs: jobsConfig });
3659
3672
  const graceful = new Graceful({ brees: [bree] });
3660
3673
  graceful.listen();
3661
- (async () => {
3662
- await bree.start();
3663
- })();
3674
+ bree.on("worker created", (name) => {
3675
+ logger.debug(`Worker created for job: ${name}`);
3676
+ });
3677
+ bree.on("worker online", (name) => {
3678
+ logger.debug(`Worker online for job: ${name}`);
3679
+ });
3680
+ bree.on("worker message", (name, message) => {
3681
+ logger.debug(`Worker message from ${name}:`, message);
3682
+ });
3683
+ bree.on("worker deleted", (name) => {
3684
+ logger.debug(`Worker deleted for job: ${name}`);
3685
+ });
3686
+ bree.on("worker exit", (name, code, signal) => {
3687
+ if (code !== 0) {
3688
+ logger.error(
3689
+ `Worker ${name} exited with code ${code}, signal ${signal}`
3690
+ );
3691
+ } else {
3692
+ logger.debug(`Worker ${name} exited successfully`);
3693
+ }
3694
+ });
3695
+ await bree.start();
3664
3696
  bree.on("jobStarted", (job) => {
3665
3697
  console.log("Job " + job.name + " started");
3666
3698
  });