@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 +4 -0
- package/api.js +2 -2
- package/deploy.js +1 -25
- package/distributed-lock.js +4 -2
- package/kafka.js +2 -2
- package/package.json +1 -1
- package/selector.js +25 -0
package/CHANGELOG.md
CHANGED
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");
|
package/distributed-lock.js
CHANGED
|
@@ -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(
|
|
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(
|
|
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
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,
|