@nexrender/worker 1.61.1 → 1.62.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.
Files changed (2) hide show
  1. package/package.json +5 -5
  2. package/src/instance.js +23 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexrender/worker",
3
- "version": "1.61.1",
3
+ "version": "1.62.1",
4
4
  "author": "inlife",
5
5
  "main": "src/index.js",
6
6
  "homepage": "https://www.nexrender.com",
@@ -19,9 +19,9 @@
19
19
  ]
20
20
  },
21
21
  "dependencies": {
22
- "@nexrender/api": "^1.60.2",
23
- "@nexrender/core": "^1.61.1",
24
- "@nexrender/types": "^1.45.6",
22
+ "@nexrender/api": "^1.62.0",
23
+ "@nexrender/core": "^1.62.1",
24
+ "@nexrender/types": "^1.62.0",
25
25
  "arg": "^4.1.0",
26
26
  "chalk": "^2.4.2",
27
27
  "rimraf": "^3.0.2"
@@ -29,5 +29,5 @@
29
29
  "publishConfig": {
30
30
  "access": "public"
31
31
  },
32
- "gitHead": "72e21f60d70b0a84489cccee7898fe8860ecfd33"
32
+ "gitHead": "cd245f5a9d3b57e555d40de3c9d228c4c8aec66f"
33
33
  }
package/src/instance.js CHANGED
@@ -1,3 +1,5 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
1
3
  const { createClient } = require('@nexrender/api')
2
4
  const { init, render } = require('@nexrender/core')
3
5
  const { getRenderingStatus } = require('@nexrender/types/job')
@@ -7,9 +9,24 @@ const pkg = require('../package.json')
7
9
  const NEXRENDER_API_POLLING = process.env.NEXRENDER_API_POLLING || 30 * 1000;
8
10
  const NEXRENDER_TOLERATE_EMPTY_QUEUES = process.env.NEXRENDER_TOLERATE_EMPTY_QUEUES;
9
11
  const NEXRENDER_PICKUP_TIMEOUT = process.env.NEXRENDER_PICKUP_TIMEOUT || 60 * 1000; // 60 second timeout by default
12
+ const LOCK_FILE_NAME = process.env.NEXRENDER_LOCK_FILE_NAME || '.nexrender-worker.lock';
10
13
 
11
14
  const delay = amount => new Promise(resolve => setTimeout(resolve, amount))
12
15
 
16
+ const checkLockFile = (settings) => {
17
+ const lockFilePath = path.join(path.dirname(process.execPath), LOCK_FILE_NAME);
18
+ try {
19
+ if (fs.existsSync(lockFilePath)) {
20
+ settings.logger.log('[worker] Lock file detected, initiating graceful shutdown...');
21
+ fs.unlinkSync(lockFilePath);
22
+ return true;
23
+ }
24
+ } catch (err) {
25
+ settings.logger.error(`[worker] Error handling lock file: ${err.message}`);
26
+ }
27
+ return false;
28
+ }
29
+
13
30
  const createWorker = () => {
14
31
  let emptyReturns = 0;
15
32
  let active = false;
@@ -43,6 +60,12 @@ const createWorker = () => {
43
60
  return null
44
61
  }
45
62
 
63
+ // Check for lock file before proceeding
64
+ if (checkLockFile(settings)) {
65
+ active = false;
66
+ return null;
67
+ }
68
+
46
69
  settings.logger.log(`[worker] checking for new jobs...`);
47
70
 
48
71
  let job = await withTimeout(