@certik/skynet 0.10.11 → 0.10.12

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.10.12
4
+
5
+ - Fixed distributed lock name for `producer` and `api` type apps
6
+
3
7
  ## 0.10.11
4
8
 
5
9
  - Added distributed lock for `producer` and `api` type apps
package/api.js CHANGED
@@ -1,6 +1,6 @@
1
1
  const express = require("express");
2
2
  const meow = require("meow");
3
- const { getSelectorFlags, getSelectorDesc } = require("./selector");
3
+ const { getJobName, getSelectorFlags, getSelectorDesc } = require("./selector");
4
4
  const { isProduction } = require("./env");
5
5
  const { useLock } = require("./distributed-lock");
6
6
  const { inline } = require("./log");
@@ -83,7 +83,7 @@ ${getSelectorDesc(selector)}
83
83
 
84
84
  const { verbose, ...selectorFlags } = cli.flags;
85
85
 
86
- await useLock({ name, ttl: 120, verbose });
86
+ await useLock({ name: getJobName(name, selectorFlags), ttl: 120, verbose });
87
87
 
88
88
  // for health check
89
89
  app.get("/", (req, res) => {
package/deploy.js CHANGED
@@ -4,7 +4,7 @@ const execa = require("execa");
4
4
  const meow = require("meow");
5
5
  const chalk = require("chalk");
6
6
  const which = require("which");
7
- const { getSelectorFlags, getSelectorDesc } = require("./selector");
7
+ const { getJobName, getSelectorFlags, getSelectorDesc } = require("./selector");
8
8
  const { getEnvOrThrow } = require("./env");
9
9
  const { getBinaryName, detectSkynetDirectory } = require("./cli");
10
10
 
@@ -207,30 +207,6 @@ EOH
207
207
  }
208
208
  }`;
209
209
 
210
- function normalizeSelectorValue(v) {
211
- return v.replace(/[^A-Za-z0-9]+/g, "-");
212
- }
213
-
214
- function getJobName(name, selectorFlags, mode = null) {
215
- const selectorNamePart = Object.keys(selectorFlags)
216
- .sort()
217
- .map((name) => selectorFlags[name])
218
- .join("-");
219
-
220
- let jobName = name;
221
-
222
- if (mode) {
223
- jobName += `-${mode}`;
224
- }
225
-
226
- if (selectorNamePart.length > 0) {
227
- // handle special case
228
- jobName += `-${normalizeSelectorValue(selectorNamePart)}`;
229
- }
230
-
231
- return jobName;
232
- }
233
-
234
210
  async function prepareNomad(isProduction) {
235
211
  if (isProduction) {
236
212
  console.log("Deploy to Production");
@@ -79,10 +79,12 @@ async function hasLock(name, uid = null) {
79
79
  }
80
80
 
81
81
  async function useLock({ name, ttl, verbose }) {
82
+ const lockWarningMessage = `only one process with the same lock name ${name} should be running, terminate current process`;
83
+
82
84
  const lockAvailable = await hasLock(name);
83
85
 
84
86
  if (!lockAvailable) {
85
- console.log("only one process with the same name should be running, quit");
87
+ console.log(lockWarningMessage);
86
88
  process.exit(0);
87
89
  }
88
90
 
@@ -90,7 +92,7 @@ async function useLock({ name, ttl, verbose }) {
90
92
 
91
93
  setInterval(async () => {
92
94
  if (!(await hasLock(name, uid))) {
93
- console.log("only one process with the same name should be running, quit");
95
+ console.log(lockWarningMessage);
94
96
  process.exit(0);
95
97
  }
96
98
 
package/kafka.js CHANGED
@@ -2,7 +2,7 @@ const meow = require("meow");
2
2
  const { getEnvironment, getEnvOrThrow } = require("./env");
3
3
  const { wait } = require("./availability");
4
4
  const { Kafka, logLevel } = require("kafkajs");
5
- const { getSelectorFlags, getSelectorDesc, toSelectorString } = require("./selector");
5
+ const { getJobName, getSelectorFlags, getSelectorDesc, toSelectorString } = require("./selector");
6
6
  const { createRecord, getRecordByKey, deleteRecordsByHashKey } = require("./dynamodb");
7
7
  const { exponentialRetry } = require("./availability");
8
8
  const { useLock } = require("./distributed-lock");
@@ -219,7 +219,7 @@ ${getSelectorDesc(selector)}
219
219
  process.exit(0);
220
220
  }
221
221
 
222
- await useLock({ name, ttl: 120, verbose });
222
+ await useLock({ name: getJobName(name, selectorFlags), ttl: 120, verbose });
223
223
 
224
224
  if (!from) {
225
225
  const prevId = await getProducerLatestId(name, selectorFlags);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@certik/skynet",
3
- "version": "0.10.11",
3
+ "version": "0.10.12",
4
4
  "description": "Skynet Shared JS library",
5
5
  "main": "index.js",
6
6
  "author": "CertiK Engineering",
package/selector.js CHANGED
@@ -46,7 +46,32 @@ function toSelectorString(selectorFlags, delim = ",") {
46
46
  .join(delim);
47
47
  }
48
48
 
49
+ function normalizeSelectorValue(v) {
50
+ return v.replace(/[^A-Za-z0-9]+/g, "-");
51
+ }
52
+
53
+ function getJobName(name, selectorFlags, mode = null) {
54
+ const selectorNamePart = Object.keys(selectorFlags)
55
+ .sort()
56
+ .map((name) => selectorFlags[name])
57
+ .join("-");
58
+
59
+ let jobName = name;
60
+
61
+ if (mode) {
62
+ jobName += `-${mode}`;
63
+ }
64
+
65
+ if (selectorNamePart.length > 0) {
66
+ // handle special case
67
+ jobName += `-${normalizeSelectorValue(selectorNamePart)}`;
68
+ }
69
+
70
+ return jobName;
71
+ }
72
+
49
73
  module.exports = {
74
+ getJobName,
50
75
  getSelectorDesc,
51
76
  getSelectorFlags,
52
77
  toSelectorString,