@toa.io/extensions.configuration 1.0.0-alpha.311 → 1.0.0-alpha.313
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/components/configuration.values/manifest.toa.yaml +4 -0
- package/components/configuration.values/operations/fetch.js +3 -2
- package/components/configuration.values/operations/lib/resolve.js +13 -3
- package/components/configuration.values/source/fetch.ts +3 -1
- package/components/configuration.values/source/lib/resolve.ts +17 -3
- package/components/configuration.values/types/toa.d.ts +1 -0
- package/package.json +4 -4
- package/readme.md +23 -3
- package/transpiled/Aspect.js +2 -2
- package/transpiled/Aspect.js.map +1 -1
- package/transpiled/Client.d.ts +19 -3
- package/transpiled/Client.js +41 -8
- package/transpiled/Client.js.map +1 -1
- package/transpiled/configuration.d.ts +2 -0
- package/transpiled/configuration.js +5 -1
- package/transpiled/configuration.js.map +1 -1
- package/ui/dist/_app/immutable/chunks/{C3B60XAt.js → BChBfZBo.js} +2 -2
- package/ui/dist/_app/immutable/chunks/{PnrO3qAK.js → D2Pwjbel.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{D_toi6Gh.js → DucMSfU2.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{ecRPYFMN.js → N2QYE_-W.js} +1 -1
- package/ui/dist/_app/immutable/chunks/{CPFWN2yl.js → tCi1Fi-q.js} +1 -1
- package/ui/dist/_app/immutable/entry/{app.DUsdcQBH.js → app.BTseTozs.js} +2 -2
- package/ui/dist/_app/immutable/entry/start.Te91gu4w.js +1 -0
- package/ui/dist/_app/immutable/nodes/{0.DsgFo43s.js → 0.BFLPfNMb.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{1.DXKSw8PI.js → 1.BwA1zIJg.js} +1 -1
- package/ui/dist/_app/immutable/nodes/{2.1zp4Ozb5.js → 2.BG0rgRs0.js} +1 -1
- package/ui/dist/_app/immutable/nodes/3.kqEdbNlI.js +1 -0
- package/ui/dist/_app/immutable/nodes/{4.CXWthKII.js → 4.1G5zNhKM.js} +1 -1
- package/ui/dist/_app/version.json +1 -1
- package/ui/dist/index.html +10 -10
- package/ui/dist/_app/immutable/entry/start.6FDvOFn_.js +0 -1
- package/ui/dist/_app/immutable/nodes/3.BbXeBPYP.js +0 -1
|
@@ -6,8 +6,9 @@ export async function computation(input, context) {
|
|
|
6
6
|
component,
|
|
7
7
|
epoch,
|
|
8
8
|
configuration: value === null ? null : value.configuration,
|
|
9
|
-
created: value === null ? 0 : value.created
|
|
9
|
+
created: value === null ? 0 : value.created,
|
|
10
|
+
revision: value === null ? null : value.revision
|
|
10
11
|
};
|
|
11
12
|
}));
|
|
12
13
|
}
|
|
13
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zb3VyY2UvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBZ0IsTUFBTSxrQkFBa0IsQ0FBQTtBQUV4RCxNQUFNLENBQUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxLQUFhLEVBQUUsT0FBZ0I7SUFDL0QsT0FBTyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ3RCLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7UUFDdkMsTUFBTSxLQUFLLEdBQUcsTUFBTSxPQUFPLENBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUV0RCxPQUFPO1lBQ0wsU0FBUztZQUNULEtBQUs7WUFDTCxhQUFhLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYTtZQUMxRCxPQUFPLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTztZQUMzQyxRQUFRLEVBQUUsS0FBSyxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUNqRCxDQUFBO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtBQUNILENBQUMifQ==
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { revision } from '@toa.io/definitions/extensions.configuration';
|
|
1
2
|
import { entry } from './map.js';
|
|
2
3
|
/**
|
|
3
4
|
* The latest configuration created for the component and the epoch; the deployed
|
|
@@ -16,9 +17,18 @@ export async function resolve(context, component, epoch) {
|
|
|
16
17
|
};
|
|
17
18
|
const objects = await context.local.enumerate({ query });
|
|
18
19
|
if (objects.length > 0)
|
|
19
|
-
return {
|
|
20
|
+
return {
|
|
21
|
+
configuration: objects[0].configuration,
|
|
22
|
+
created: objects[0].CREATED,
|
|
23
|
+
revision: null
|
|
24
|
+
};
|
|
25
|
+
// what a component was deployed with tells this deployment's defaults from another's
|
|
20
26
|
if (known !== undefined && known.epoch === epoch)
|
|
21
|
-
return {
|
|
27
|
+
return {
|
|
28
|
+
configuration: known.defaults ?? {},
|
|
29
|
+
created: 0,
|
|
30
|
+
revision: revision(known.defaults)
|
|
31
|
+
};
|
|
22
32
|
return null;
|
|
23
33
|
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb2x2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NvdXJjZS9saWIvcmVzb2x2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOENBQThDLENBQUE7QUFDdkUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUVoQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FDM0IsT0FBZ0IsRUFDaEIsU0FBaUIsRUFDakIsS0FBYztJQUVkLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUU5QixLQUFLLEtBQUssS0FBSyxFQUFFLEtBQUssQ0FBQTtJQUV0QixJQUFJLEtBQUssS0FBSyxTQUFTO1FBQUUsT0FBTyxJQUFJLENBQUE7SUFFcEMsd0ZBQXdGO0lBQ3hGLE1BQU0sS0FBSyxHQUFVO1FBQ25CLFFBQVEsRUFBRSxlQUFlLFNBQVMsYUFBYSxLQUFLLEdBQUc7UUFDdkQsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDO1FBQ3RCLEtBQUssRUFBRSxDQUFDO0tBQ1QsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO0lBRXhELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1FBQ3BCLE9BQU87WUFDTCxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWE7WUFDdkMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPO1lBQzNCLFFBQVEsRUFBRSxJQUFJO1NBQ2YsQ0FBQTtJQUVILHFGQUFxRjtJQUNyRixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxLQUFLO1FBQzlDLE9BQU87WUFDTCxhQUFhLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxDQUFDO1lBQ1YsUUFBUSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1NBQ25DLENBQUE7SUFFSCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMifQ==
|
|
@@ -9,7 +9,8 @@ export async function computation(input: Pair[], context: Context): Promise<Fetc
|
|
|
9
9
|
component,
|
|
10
10
|
epoch,
|
|
11
11
|
configuration: value === null ? null : value.configuration,
|
|
12
|
-
created: value === null ? 0 : value.created
|
|
12
|
+
created: value === null ? 0 : value.created,
|
|
13
|
+
revision: value === null ? null : value.revision
|
|
13
14
|
}
|
|
14
15
|
})
|
|
15
16
|
)
|
|
@@ -23,4 +24,5 @@ interface Pair {
|
|
|
23
24
|
interface Fetched extends Pair {
|
|
24
25
|
configuration: object | null
|
|
25
26
|
created: number
|
|
27
|
+
revision: string | null
|
|
26
28
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { revision } from '@toa.io/definitions/extensions.configuration'
|
|
1
2
|
import { entry } from './map.ts'
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -25,18 +26,31 @@ export async function resolve(
|
|
|
25
26
|
const objects = await context.local.enumerate({ query })
|
|
26
27
|
|
|
27
28
|
if (objects.length > 0)
|
|
28
|
-
return {
|
|
29
|
+
return {
|
|
30
|
+
configuration: objects[0].configuration,
|
|
31
|
+
created: objects[0].CREATED,
|
|
32
|
+
revision: null
|
|
33
|
+
}
|
|
29
34
|
|
|
35
|
+
// what a component was deployed with tells this deployment's defaults from another's
|
|
30
36
|
if (known !== undefined && known.epoch === epoch)
|
|
31
|
-
return {
|
|
37
|
+
return {
|
|
38
|
+
configuration: known.defaults ?? {},
|
|
39
|
+
created: 0,
|
|
40
|
+
revision: revision(known.defaults)
|
|
41
|
+
}
|
|
32
42
|
|
|
33
43
|
return null
|
|
34
44
|
}
|
|
35
45
|
|
|
36
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* A configuration and when it was created; `0` for the deployed defaults, which alone have a
|
|
48
|
+
* revision.
|
|
49
|
+
*/
|
|
37
50
|
export interface Value {
|
|
38
51
|
configuration: object
|
|
39
52
|
created: number
|
|
53
|
+
revision: string | null
|
|
40
54
|
}
|
|
41
55
|
|
|
42
56
|
export interface Context {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@toa.io/extensions.configuration",
|
|
3
|
-
"version": "1.0.0-alpha.
|
|
3
|
+
"version": "1.0.0-alpha.313",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Toa Configuration",
|
|
6
6
|
"author": "temich <tema.gurtovoy@gmail.com>",
|
|
@@ -32,10 +32,10 @@
|
|
|
32
32
|
"prepack": "npm run build:ui",
|
|
33
33
|
"features": "TSX_TSCONFIG_PATH=features/steps/tsconfig.json NODE_OPTIONS=--import=tsx cucumber-js"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "7da3b2627ceeefd1fa19d5c8851be88d928523b6",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@toa.io/core": "1.0.0-alpha.
|
|
38
|
-
"@toa.io/definitions": "1.0.0-alpha.
|
|
37
|
+
"@toa.io/core": "1.0.0-alpha.312",
|
|
38
|
+
"@toa.io/definitions": "1.0.0-alpha.313",
|
|
39
39
|
"@toa.io/generic": "1.0.0-alpha.311",
|
|
40
40
|
"@toa.io/schemas": "1.0.0-alpha.311",
|
|
41
41
|
"openspan": "1.0.0-alpha.305"
|
package/readme.md
CHANGED
|
@@ -122,6 +122,16 @@ The configuration epoch of a component is the SHA-256 of its configuration schem
|
|
|
122
122
|
canonical JSON. A configuration object belongs to the epoch of the schema it was validated
|
|
123
123
|
against. A schema change is a new epoch.
|
|
124
124
|
|
|
125
|
+
### Revision
|
|
126
|
+
|
|
127
|
+
The configuration revision of a component is the SHA-256 of the defaults it is deployed with — the
|
|
128
|
+
[annotation](#annotation) over the manifest `defaults` — as canonical JSON. Within one epoch, every
|
|
129
|
+
deployment that changes the defaults is a new revision.
|
|
130
|
+
|
|
131
|
+
[`toa deploy`](/runtime/cli/readme.md#deploy) gives every component it deploys the revision of its
|
|
132
|
+
configuration as `TOA_CONFIGURATION_REVISION_<NAMESPACE>_<NAME>`. A deployment that changes a
|
|
133
|
+
component's defaults and nothing else replaces its processes, as a change to its sources does.
|
|
134
|
+
|
|
125
135
|
## Annotation
|
|
126
136
|
|
|
127
137
|
A component's configuration can be overridden using the configuration context annotation.
|
|
@@ -233,7 +243,8 @@ The configuration of a component for an epoch is:
|
|
|
233
243
|
`{ configuration, schema, epoch }`, or `null` when there is none. The epoch is the deployed
|
|
234
244
|
one when omitted; an epoch the deployment does not know has no `schema`.
|
|
235
245
|
- `fetch([{ component, epoch }])`: the same for several pairs at once, as
|
|
236
|
-
`[{ component, epoch, configuration }]`.
|
|
246
|
+
`[{ component, epoch, configuration, created, revision }]`. `revision` is that of the deployed
|
|
247
|
+
defaults when they are what is served, and `null` for a created object.
|
|
237
248
|
- `list()`: every component's configuration for its deployed epoch, by component name, as
|
|
238
249
|
`[{ component, epoch, schema, configuration }]`.
|
|
239
250
|
- `create({ component, configuration, originator })`: a new object for the component's
|
|
@@ -285,8 +296,17 @@ function transition(input, entity, context) {
|
|
|
285
296
|
On start, a component requests its configuration for its epoch from the values service and
|
|
286
297
|
waits until there is one, reporting every fifth attempt. The schema is applied, and secrets
|
|
287
298
|
are substituted. What is served is what was stored, whole: a `default` written into the schema
|
|
288
|
-
fills nothing, so a value every component is to have is declared in `defaults`. After a
|
|
289
|
-
|
|
299
|
+
fills nothing, so a value every component is to have is declared in `defaults`. After a
|
|
300
|
+
configuration is created, the running component receives the new object and takes it when its
|
|
301
|
+
`CREATED` is later than that of the value it holds.
|
|
302
|
+
|
|
303
|
+
Deployed defaults are taken only from a values service of the component's own
|
|
304
|
+
[revision](#revision). One of another — a values service of the previous deployment, still serving
|
|
305
|
+
while it is replaced — is refused and asked again, and the refusal is logged as
|
|
306
|
+
`Configuration of another revision refused` with the `component`, its `epoch`, the `expected`
|
|
307
|
+
revision and the `received` one, on the first refusal and every fifth. A created configuration is
|
|
308
|
+
taken from any. A component deployed without a revision, one started by `toa compose` or evicted
|
|
309
|
+
from the Context, takes what it is served.
|
|
290
310
|
|
|
291
311
|
### Local override
|
|
292
312
|
|
package/transpiled/Aspect.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { console } from 'openspan';
|
|
2
2
|
import { Connector } from '@toa.io/core';
|
|
3
|
-
import { fit, local } from './configuration.js';
|
|
3
|
+
import { fit, local, revision } from './configuration.js';
|
|
4
4
|
import { epoch } from '@toa.io/definitions/extensions.configuration';
|
|
5
5
|
export class Aspect extends Connector {
|
|
6
6
|
name = 'configuration';
|
|
@@ -35,7 +35,7 @@ export class Aspect extends Connector {
|
|
|
35
35
|
this.value = local(this.locator, this.manifest);
|
|
36
36
|
return;
|
|
37
37
|
}
|
|
38
|
-
const { configuration, created } = await this.client.fetch(this.locator.id, this.epoch);
|
|
38
|
+
const { configuration, created } = await this.client.fetch(this.locator.id, this.epoch, revision(this.locator));
|
|
39
39
|
this.value = fit(configuration, this.manifest);
|
|
40
40
|
this.created = created;
|
|
41
41
|
this.client.subscribe(this.locator.id, this.epoch, this.listener);
|
package/transpiled/Aspect.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Aspect.js","sourceRoot":"","sources":["../source/Aspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,SAAS,EAAgB,MAAM,cAAc,CAAA;AAEtD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAa,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"Aspect.js","sourceRoot":"","sources":["../source/Aspect.ts"],"names":[],"mappings":"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"}
|
package/transpiled/Client.d.ts
CHANGED
|
@@ -11,22 +11,36 @@ export declare class Client extends Connector {
|
|
|
11
11
|
private readonly options;
|
|
12
12
|
private readonly pending;
|
|
13
13
|
private readonly listeners;
|
|
14
|
+
/** How many times in a row each pending component and epoch was refused. */
|
|
15
|
+
private readonly refusals;
|
|
14
16
|
private remote;
|
|
15
17
|
private timer;
|
|
16
18
|
private flushing;
|
|
17
19
|
private fresh;
|
|
18
20
|
private round;
|
|
19
21
|
constructor(host: Host, options?: Partial<Options>);
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
+
/**
|
|
23
|
+
* The configuration of a component for an epoch, once the service has one. Given the
|
|
24
|
+
* revision the component was deployed with, deployed defaults of another are not taken.
|
|
25
|
+
*/
|
|
26
|
+
fetch(component: string, epoch: string, revision?: string): Promise<Value>;
|
|
22
27
|
subscribe(component: string, epoch: string, listener: Listener): void;
|
|
23
28
|
unsubscribe(component: string, epoch: string, listener: Listener): void;
|
|
24
29
|
protected open(): Promise<void>;
|
|
25
30
|
protected close(): Promise<void>;
|
|
26
31
|
private schedule;
|
|
27
32
|
private flush;
|
|
28
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Those the service has served are told; the rest stay for the next round. Deployed
|
|
35
|
+
* defaults of another revision than the one asked for stay as well, and are returned: a
|
|
36
|
+
* values service of another deployment answered, and the next round may reach one of this.
|
|
37
|
+
* One that answers no revision predates them, which makes it another deployment too.
|
|
38
|
+
*/
|
|
29
39
|
private settle;
|
|
40
|
+
/**
|
|
41
|
+
* A component that was refused is said to be, on its first refusal and every n-th after,
|
|
42
|
+
* rather than to be waiting.
|
|
43
|
+
*/
|
|
30
44
|
private report;
|
|
31
45
|
private backoff;
|
|
32
46
|
/** A created object goes to the subscribers of its component and epoch, as it is. */
|
|
@@ -48,6 +62,8 @@ export interface Fetched {
|
|
|
48
62
|
epoch: string;
|
|
49
63
|
configuration: object | null;
|
|
50
64
|
created: number;
|
|
65
|
+
/** Of the deployed defaults; `null` for a created object, absent from an older service. */
|
|
66
|
+
revision?: string | null;
|
|
51
67
|
}
|
|
52
68
|
/** The `configuration.values.created` payload: the object as stored. */
|
|
53
69
|
export interface Created {
|
package/transpiled/Client.js
CHANGED
|
@@ -12,6 +12,8 @@ export class Client extends Connector {
|
|
|
12
12
|
options;
|
|
13
13
|
pending = new Map();
|
|
14
14
|
listeners = new Map();
|
|
15
|
+
/** How many times in a row each pending component and epoch was refused. */
|
|
16
|
+
refusals = new Map();
|
|
15
17
|
remote = null;
|
|
16
18
|
timer = null;
|
|
17
19
|
flushing = false;
|
|
@@ -22,12 +24,15 @@ export class Client extends Connector {
|
|
|
22
24
|
this.host = host;
|
|
23
25
|
this.options = { ...DEFAULTS, ...options };
|
|
24
26
|
}
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
+
/**
|
|
28
|
+
* The configuration of a component for an epoch, once the service has one. Given the
|
|
29
|
+
* revision the component was deployed with, deployed defaults of another are not taken.
|
|
30
|
+
*/
|
|
31
|
+
async fetch(component, epoch, revision) {
|
|
27
32
|
const key = id(component, epoch);
|
|
28
33
|
let entry = this.pending.get(key);
|
|
29
34
|
if (entry === undefined) {
|
|
30
|
-
entry = { component, epoch, waiters: [] };
|
|
35
|
+
entry = { component, epoch, revision, waiters: [] };
|
|
31
36
|
this.pending.set(key, entry);
|
|
32
37
|
}
|
|
33
38
|
const promise = new Promise((resolve) => {
|
|
@@ -82,11 +87,12 @@ export class Client extends Connector {
|
|
|
82
87
|
this.fresh = false;
|
|
83
88
|
const batch = [...this.pending.values()];
|
|
84
89
|
const input = batch.map(({ component, epoch }) => ({ component, epoch }));
|
|
90
|
+
let refused = [];
|
|
85
91
|
try {
|
|
86
92
|
const output = await this.remote.invoke('fetch', { input });
|
|
87
93
|
if (output instanceof Error)
|
|
88
94
|
throw output;
|
|
89
|
-
this.settle(output);
|
|
95
|
+
refused = this.settle(output);
|
|
90
96
|
}
|
|
91
97
|
catch (error) {
|
|
92
98
|
console.warn('Configuration fetch failed', { error });
|
|
@@ -94,7 +100,7 @@ export class Client extends Connector {
|
|
|
94
100
|
finally {
|
|
95
101
|
this.flushing = false;
|
|
96
102
|
}
|
|
97
|
-
this.report(batch);
|
|
103
|
+
this.report(batch, refused);
|
|
98
104
|
if (this.pending.size === 0)
|
|
99
105
|
return;
|
|
100
106
|
if (this.fresh)
|
|
@@ -102,24 +108,51 @@ export class Client extends Connector {
|
|
|
102
108
|
else
|
|
103
109
|
this.schedule(this.backoff());
|
|
104
110
|
}
|
|
105
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Those the service has served are told; the rest stay for the next round. Deployed
|
|
113
|
+
* defaults of another revision than the one asked for stay as well, and are returned: a
|
|
114
|
+
* values service of another deployment answered, and the next round may reach one of this.
|
|
115
|
+
* One that answers no revision predates them, which makes it another deployment too.
|
|
116
|
+
*/
|
|
106
117
|
settle(output) {
|
|
107
|
-
|
|
118
|
+
const refused = [];
|
|
119
|
+
for (const { component, epoch, configuration, created, revision } of output) {
|
|
108
120
|
if (configuration === null)
|
|
109
121
|
continue;
|
|
110
122
|
const key = id(component, epoch);
|
|
111
123
|
const entry = this.pending.get(key);
|
|
112
124
|
if (entry === undefined)
|
|
113
125
|
continue;
|
|
126
|
+
const received = revision ?? null;
|
|
127
|
+
if (entry.revision !== undefined && created === 0 && received !== entry.revision) {
|
|
128
|
+
refused.push({ component, epoch, expected: entry.revision, received });
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
114
131
|
this.pending.delete(key);
|
|
115
132
|
for (const resolve of entry.waiters)
|
|
116
133
|
resolve({ configuration, created });
|
|
117
134
|
}
|
|
135
|
+
return refused;
|
|
118
136
|
}
|
|
119
|
-
|
|
137
|
+
/**
|
|
138
|
+
* A component that was refused is said to be, on its first refusal and every n-th after,
|
|
139
|
+
* rather than to be waiting.
|
|
140
|
+
*/
|
|
141
|
+
report(batch, refused) {
|
|
142
|
+
for (const refusal of refused) {
|
|
143
|
+
const key = id(refusal.component, refusal.epoch);
|
|
144
|
+
const count = (this.refusals.get(key) ?? 0) + 1;
|
|
145
|
+
this.refusals.set(key, count);
|
|
146
|
+
if (count % this.options.warn === 1)
|
|
147
|
+
console.warn('Configuration of another revision refused', { ...refusal });
|
|
148
|
+
}
|
|
120
149
|
const waiting = batch
|
|
121
150
|
.filter(({ component, epoch }) => this.pending.has(id(component, epoch)))
|
|
151
|
+
.filter(({ component, epoch }) => !this.refusals.has(id(component, epoch)))
|
|
122
152
|
.map(({ component }) => component);
|
|
153
|
+
for (const key of this.refusals.keys())
|
|
154
|
+
if (!this.pending.has(key))
|
|
155
|
+
this.refusals.delete(key);
|
|
123
156
|
if (waiting.length === 0) {
|
|
124
157
|
this.round = 0;
|
|
125
158
|
return;
|
package/transpiled/Client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../source/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAA;AAK5E;;;;GAIG;AACH,MAAM,OAAO,MAAO,SAAQ,SAAS;IACnC,gGAAgG;IAE/E,IAAI,CAAM;IACV,OAAO,CAAS;IAChB,OAAO,GAAG,IAAI,GAAG,EAAmB,CAAA;IACpC,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"Client.js","sourceRoot":"","sources":["../source/Client.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,8 @@ import { type Locator } from '@toa.io/core';
|
|
|
2
2
|
import type { Manifest } from '@toa.io/definitions/extensions.configuration';
|
|
3
3
|
/** The variable is set, so the values service is not consulted. */
|
|
4
4
|
export declare function overridden(locator: Locator): boolean;
|
|
5
|
+
/** The revision of the defaults the component was deployed with; none where it was not. */
|
|
6
|
+
export declare function revision(locator: Locator): string | undefined;
|
|
5
7
|
/** The variable, the manifest defaults, then the schema. */
|
|
6
8
|
export declare function local(locator: Locator, manifest: Manifest): Node;
|
|
7
9
|
/** A copy of the value with the schema applied and the secrets substituted. */
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { add, environment } from '@toa.io/generic';
|
|
2
2
|
import * as schemas from '@toa.io/schemas';
|
|
3
|
-
import { PREFIX, SECRET_RX, assertSecrets } from '@toa.io/definitions/extensions.configuration';
|
|
3
|
+
import { PREFIX, REVISION, SECRET_RX, assertSecrets } from '@toa.io/definitions/extensions.configuration';
|
|
4
4
|
import { Secret } from './Secret.js';
|
|
5
5
|
/** The variable is set, so the values service is not consulted. */
|
|
6
6
|
export function overridden(locator) {
|
|
7
7
|
return environment.get(PREFIX + locator.uppercase) !== undefined;
|
|
8
8
|
}
|
|
9
|
+
/** The revision of the defaults the component was deployed with; none where it was not. */
|
|
10
|
+
export function revision(locator) {
|
|
11
|
+
return environment.get(REVISION + locator.uppercase);
|
|
12
|
+
}
|
|
9
13
|
/** The variable, the manifest defaults, then the schema. */
|
|
10
14
|
export function local(locator, manifest) {
|
|
11
15
|
const values = read(locator.uppercase);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../source/configuration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EACL,MAAM,EACN,SAAS,EACT,aAAa,EACd,MAAM,8CAA8C,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAIpC,mEAAmE;AACnE,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,OAAO,WAAW,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,CAAA;AAClE,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,KAAK,CAAC,OAAgB,EAAE,QAAkB;IACxD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAEtC,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS;QAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;IAEnE,OAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAC9B,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,QAAkB;IACjD,wFAAwF;IACxF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAS,CAAA;IAEtD,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAEzB,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,MAAY,EAAE,QAAkB;IAChD,MAAM,MAAM,GAAgB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE3D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACvB,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACxC,CAAC;AAED,SAAS,IAAI,CAAC,MAAc;IAC1B,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAExC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAA;;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,iBAAiB,CAAC,aAAmB;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;YAAE,iBAAiB,CAAC,KAAa,CAAC,CAAA;QAEjF,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAQ;QAEvC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAEpC,IAAI,KAAK,KAAK,IAAI;YAAE,SAAQ;QAE5B,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAA;QAEnC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,IAAK,CAAC,CAAC,CAAA;IACnD,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;IACpC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAEvC,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,cAAc,CAAC,CAAA;IAEnE,OAAO,KAAK,CAAA;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"configuration.js","sourceRoot":"","sources":["../source/configuration.ts"],"names":[],"mappings":"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"}
|