@hotmeshio/hotmesh 0.1.11 → 0.1.13
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/build/package.json
CHANGED
|
@@ -186,7 +186,7 @@ class ClientService {
|
|
|
186
186
|
throw error;
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
|
-
else if (isNaN(Number(appVersion)) || appVersion
|
|
189
|
+
else if (isNaN(Number(appVersion)) || appVersion < version) {
|
|
190
190
|
try {
|
|
191
191
|
await hotMesh.deploy((0, factory_1.getWorkflowYAML)(appId, version));
|
|
192
192
|
await hotMesh.activate(version);
|
|
@@ -48,6 +48,12 @@ declare class EngineService {
|
|
|
48
48
|
initSubChannel(sub: RedisClient): Promise<void>;
|
|
49
49
|
initStreamChannel(stream: RedisClient): Promise<void>;
|
|
50
50
|
initRouter(config: HotMeshConfig): Promise<Router>;
|
|
51
|
+
/**
|
|
52
|
+
* resolves the distributed executable version using a delay
|
|
53
|
+
* to allow deployment race conditions to resolve
|
|
54
|
+
* @private
|
|
55
|
+
*/
|
|
56
|
+
fetchAndVerifyVID(vid: AppVID, count?: number): Promise<AppVID>;
|
|
51
57
|
getVID(vid?: AppVID): Promise<AppVID>;
|
|
52
58
|
setCacheMode(cacheMode: CacheMode, untilVersion: string): void;
|
|
53
59
|
routeToSubscribers(topic: string, message: JobOutput): Promise<void>;
|
|
@@ -94,6 +94,30 @@ class EngineService {
|
|
|
94
94
|
throttle,
|
|
95
95
|
}, this.stream, this.store, this.logger);
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* resolves the distributed executable version using a delay
|
|
99
|
+
* to allow deployment race conditions to resolve
|
|
100
|
+
* @private
|
|
101
|
+
*/
|
|
102
|
+
async fetchAndVerifyVID(vid, count = 0) {
|
|
103
|
+
if (isNaN(Number(vid.version))) {
|
|
104
|
+
const app = await this.store.getApp(vid.id, true);
|
|
105
|
+
if (!isNaN(Number(app.version))) {
|
|
106
|
+
if (!this.apps)
|
|
107
|
+
this.apps = {};
|
|
108
|
+
this.apps[vid.id] = app;
|
|
109
|
+
return { id: vid.id, version: app.version };
|
|
110
|
+
}
|
|
111
|
+
else if (count < 10) {
|
|
112
|
+
await (0, utils_1.sleepFor)(enums_1.HMSH_QUORUM_DELAY_MS * 2);
|
|
113
|
+
return await this.fetchAndVerifyVID(vid, count + 1);
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
this.logger.error('engine-vid-resolution-error', { id: vid.id, guid: this.guid });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return vid;
|
|
120
|
+
}
|
|
97
121
|
async getVID(vid) {
|
|
98
122
|
if (this.cacheMode === 'nocache') {
|
|
99
123
|
const app = await this.store.getApp(this.appId, true);
|
|
@@ -112,7 +136,10 @@ class EngineService {
|
|
|
112
136
|
return vid;
|
|
113
137
|
}
|
|
114
138
|
else {
|
|
115
|
-
return
|
|
139
|
+
return await this.fetchAndVerifyVID({
|
|
140
|
+
id: this.appId,
|
|
141
|
+
version: this.apps?.[this.appId].version
|
|
142
|
+
});
|
|
116
143
|
}
|
|
117
144
|
}
|
|
118
145
|
setCacheMode(cacheMode, untilVersion) {
|