@serve.zone/interfaces 32.46.0 → 32.48.0
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 +45 -0
- package/dist_ts/00_commitinfo_data.js +1 -1
- package/dist_ts/data/networkprojection.js +3 -3
- package/dist_ts/data/privatenetwork.d.ts +14 -1
- package/dist_ts/data/privatenetwork.js +30 -11
- package/dist_ts/data/runtimeassignmentlogs.d.ts +136 -0
- package/dist_ts/data/runtimeassignmentlogs.js +168 -3
- package/dist_ts/private/networkcontract.d.ts +8 -2
- package/dist_ts/private/networkcontract.js +12 -6
- package/dist_ts/requests/service.d.ts +37 -0
- package/package.json +1 -1
- package/readme.md +67 -2
- package/ts/00_commitinfo_data.ts +1 -1
- package/ts/data/networkprojection.ts +4 -2
- package/ts/data/privatenetwork.ts +34 -10
- package/ts/data/runtimeassignmentlogs.ts +307 -2
- package/ts/private/networkcontract.ts +14 -5
- package/ts/requests/service.ts +50 -0
|
@@ -200,3 +200,139 @@ export declare const bindReportRuntimeAssignmentLogsRequest: (valueArg: unknown,
|
|
|
200
200
|
}>;
|
|
201
201
|
/** Matches an acknowledgement to the exact batch that was sent. */
|
|
202
202
|
export declare const bindReportRuntimeAssignmentLogsResponse: (valueArg: unknown, requestArg: unknown) => IReportRuntimeAssignmentLogsResponse;
|
|
203
|
+
/**
|
|
204
|
+
* Why a controller no longer holds batches it accepted: `batch-cap`, its bound on how many batches
|
|
205
|
+
* it keeps of one attempt; `byte-cap`, its bound on the text it keeps of one attempt; both drop
|
|
206
|
+
* the oldest batches first; `retention`, the config's `logs.retentionMs` since it accepted them.
|
|
207
|
+
* A node delivers about once a second, so a workload that writes now and then sends many small
|
|
208
|
+
* batches, which the batch bound holds where the text bound would not.
|
|
209
|
+
*/
|
|
210
|
+
export type TRuntimeAssignmentLogTruncationReason = 'batch-cap' | 'byte-cap' | 'retention';
|
|
211
|
+
/** One batch the controller accepted and still holds, as the node sent it. */
|
|
212
|
+
export interface IRuntimeAssignmentLogBatchRecord {
|
|
213
|
+
kind: 'batch';
|
|
214
|
+
captureId: string;
|
|
215
|
+
sequence: number;
|
|
216
|
+
/** When the controller accepted the batch, in milliseconds since the Unix epoch. */
|
|
217
|
+
acceptedAt: number;
|
|
218
|
+
final: boolean;
|
|
219
|
+
entries: TRuntimeAssignmentLogEntry[];
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Sequence numbers of one capture whose batches the controller did not receive or no longer holds
|
|
223
|
+
* (its own loss): numbers that never arrived and that the node did not account for, and batches it
|
|
224
|
+
* accepted whose payload it has lost. A gap the node left by discarding is not one: the batch
|
|
225
|
+
* after it opens with the `not-kept` loss that counts it.
|
|
226
|
+
*/
|
|
227
|
+
export interface IRuntimeAssignmentLogGapRecord {
|
|
228
|
+
kind: 'gap';
|
|
229
|
+
captureId: string;
|
|
230
|
+
fromSequence: number;
|
|
231
|
+
toSequence: number;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Batches of one capture the controller accepted and has since dropped: every batch it held of the
|
|
235
|
+
* capture up to and including `throughSequence`, oldest first, so a truncation is always the start
|
|
236
|
+
* of what remains of a capture. Gaps inside that range are no longer stated. The counts are exact.
|
|
237
|
+
*/
|
|
238
|
+
export interface IRuntimeAssignmentLogTruncationRecord {
|
|
239
|
+
kind: 'truncated';
|
|
240
|
+
captureId: string;
|
|
241
|
+
throughSequence: number;
|
|
242
|
+
/** In the canonical order `batch-cap`, `byte-cap`, `retention`; duplicate-free, at least one. */
|
|
243
|
+
reasons: TRuntimeAssignmentLogTruncationReason[];
|
|
244
|
+
/** The accepted batches dropped, at least one and at most `throughSequence`. */
|
|
245
|
+
batches: number;
|
|
246
|
+
/** The UTF-8 bytes of `text` the dropped batches held. */
|
|
247
|
+
bytes: number;
|
|
248
|
+
/** The entries, lines and losses alike, the dropped batches held. */
|
|
249
|
+
entries: number;
|
|
250
|
+
}
|
|
251
|
+
export type TRuntimeAssignmentLogRecord = IRuntimeAssignmentLogBatchRecord | IRuntimeAssignmentLogGapRecord | IRuntimeAssignmentLogTruncationRecord;
|
|
252
|
+
/**
|
|
253
|
+
* One attempt whose logs the controller keeps, as an operator reads it. The controller keeps an
|
|
254
|
+
* attempt's logs from the moment it issues the attempt, so an attempt that failed before writing a
|
|
255
|
+
* line is listed with nothing held, and an attempt its slot released stays readable until
|
|
256
|
+
* `expiresAt`.
|
|
257
|
+
*/
|
|
258
|
+
export interface IRuntimeAssignmentLogAttemptView {
|
|
259
|
+
serviceId: string;
|
|
260
|
+
replicaId: string;
|
|
261
|
+
nodeId: string;
|
|
262
|
+
assignmentId: string;
|
|
263
|
+
attemptId: string;
|
|
264
|
+
/** When the controller issued the attempt, in milliseconds since the Unix epoch. */
|
|
265
|
+
issuedAt: number;
|
|
266
|
+
/** When it last accepted a batch of the attempt; null until it accepted one. */
|
|
267
|
+
lastAcceptedAt: number | null;
|
|
268
|
+
/**
|
|
269
|
+
* When the controller drops the attempt's logs whole: the latest of `issuedAt`, `lastAcceptedAt`
|
|
270
|
+
* and the time the attempt's slot released it, plus the attempt's `logs.retentionMs`. Null while
|
|
271
|
+
* the slot still holds the attempt: no expiry is scheduled, however quiet the attempt is.
|
|
272
|
+
*/
|
|
273
|
+
expiresAt: number | null;
|
|
274
|
+
/** The captures of the attempt the controller accepted a batch of. */
|
|
275
|
+
captures: number;
|
|
276
|
+
/** Those of them whose final batch it accepted. */
|
|
277
|
+
capturesEnded: number;
|
|
278
|
+
/** The UTF-8 bytes of `text` the controller holds of the attempt. */
|
|
279
|
+
keptBytes: number;
|
|
280
|
+
/** The accepted batches of the attempt it has since dropped, stated in truncation records. */
|
|
281
|
+
truncatedBatches: number;
|
|
282
|
+
}
|
|
283
|
+
/** One page of a service's attempts, newest issued first, ties in `assignmentId` order. */
|
|
284
|
+
export interface IRuntimeAssignmentLogAttemptPage {
|
|
285
|
+
attempts: IRuntimeAssignmentLogAttemptView[];
|
|
286
|
+
/** Where the next page starts; null when this page is the last. Opaque to the reader. */
|
|
287
|
+
nextCursor: string | null;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* One page of one attempt's kept logs, in delivery order: captures in the order the controller
|
|
291
|
+
* first accepted a batch of each, and within a capture by sequence. A capture's truncation record
|
|
292
|
+
* comes first, a gap record directly before the batch that follows it.
|
|
293
|
+
*/
|
|
294
|
+
export interface IRuntimeAssignmentLogPage {
|
|
295
|
+
attempt: IRuntimeAssignmentLogAttemptView;
|
|
296
|
+
records: TRuntimeAssignmentLogRecord[];
|
|
297
|
+
/** Where the next page starts; null when this page is the last. Opaque to the reader. */
|
|
298
|
+
nextCursor: string | null;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Why a controller refuses a log read: `attempt-not-found` (it keeps no logs of that attempt for
|
|
302
|
+
* that service, never did or no longer does), `cursor-invalid` (a cursor it did not hand out for
|
|
303
|
+
* this read) and `limit-invalid` (a `limit` outside its bound).
|
|
304
|
+
*/
|
|
305
|
+
export type TRuntimeAssignmentLogReadRefusal = 'attempt-not-found' | 'cursor-invalid' | 'limit-invalid';
|
|
306
|
+
/** The named refusal of a log read, sent as `TypedResponseError.errorData`. */
|
|
307
|
+
export interface IRuntimeAssignmentLogReadErrorData {
|
|
308
|
+
code: TRuntimeAssignmentLogReadRefusal;
|
|
309
|
+
retryable: false;
|
|
310
|
+
}
|
|
311
|
+
export declare const runtimeAssignmentLogReadContract: Readonly<{
|
|
312
|
+
readonly error: "Runtime assignment log read contract rejected.";
|
|
313
|
+
/** The largest `limit` `getServiceRuntimeLogAttempts` accepts; a controller refuses a larger one. */
|
|
314
|
+
readonly maximumAttemptPageSize: 256;
|
|
315
|
+
/** The largest `limit` `getRuntimeAssignmentLogs` accepts, counted in records. */
|
|
316
|
+
readonly maximumPageRecords: 256;
|
|
317
|
+
/**
|
|
318
|
+
* The most entries the records of one log page hold together: four full batches. It keeps a page
|
|
319
|
+
* within the node count every captured value is held to; one batch always fits.
|
|
320
|
+
*/
|
|
321
|
+
readonly maximumPageEntries: number;
|
|
322
|
+
/**
|
|
323
|
+
* The canonical JSON of a whole log page is at most two mebibytes, and the controller closes a
|
|
324
|
+
* page before the next record would cross it. One batch always fits: its record is smaller than
|
|
325
|
+
* the report that carried it, which `maximumReportCanonicalBytes` bounded.
|
|
326
|
+
*/
|
|
327
|
+
readonly maximumPageCanonicalBytes: number;
|
|
328
|
+
}>;
|
|
329
|
+
/** Detached exact-schema snapshot of one attempt view. */
|
|
330
|
+
export declare const snapshotRuntimeAssignmentLogAttemptView: (valueArg: unknown) => IRuntimeAssignmentLogAttemptView;
|
|
331
|
+
/** Detached exact-schema snapshot of one attempt page, in its one order. */
|
|
332
|
+
export declare const snapshotRuntimeAssignmentLogAttemptPage: (valueArg: unknown) => IRuntimeAssignmentLogAttemptPage;
|
|
333
|
+
/** Detached exact-schema snapshot of one log page, bounded and in delivery order. */
|
|
334
|
+
export declare const snapshotRuntimeAssignmentLogPage: (valueArg: unknown) => IRuntimeAssignmentLogPage;
|
|
335
|
+
/** Matches an attempt page to the read that asked for it: that service's attempts, within its limit. */
|
|
336
|
+
export declare const bindRuntimeAssignmentLogAttemptPage: (valueArg: unknown, serviceIdArg: string, limitArg: number) => IRuntimeAssignmentLogAttemptPage;
|
|
337
|
+
/** Matches a log page to the read that asked for it: that attempt of that service, within its limit. */
|
|
338
|
+
export declare const bindRuntimeAssignmentLogPage: (valueArg: unknown, serviceIdArg: string, assignmentIdArg: string, limitArg: number) => IRuntimeAssignmentLogPage;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { snapshotRuntimeAssignment, validateRuntimeAssignment } from './runtimeassignment.js';
|
|
1
|
+
import { isRuntimeReplicaId, snapshotRuntimeAssignment, validateRuntimeAssignment } from './runtimeassignment.js';
|
|
2
2
|
import { snapshotRuntimeSessionBinding } from './runtimesession.js';
|
|
3
|
-
import { captureNetwork, networkCounter, networkEqual, networkId, networkList, networkRecord, requireNetwork, } from '../private/networkcontract.js';
|
|
3
|
+
import { captureNetwork, networkCounter, networkEqual, networkId, networkList, networkNodeId, networkRecord, networkSorted, requireNetwork, } from '../private/networkcontract.js';
|
|
4
|
+
import { isOneOf, variantOf } from '../private/producercontract.js';
|
|
4
5
|
import { isRuntimeLogPolicy, runtimePolicyLimits } from '../private/runtimepolicy.js';
|
|
5
6
|
/**
|
|
6
7
|
* Rollout: a receiver on interfaces 32.37.0 or earlier reads a batch by its exact schema and
|
|
@@ -164,4 +165,168 @@ export const bindReportRuntimeAssignmentLogsResponse = (valueArg, requestArg) =>
|
|
|
164
165
|
&& response.sequence === batch.sequence);
|
|
165
166
|
return response;
|
|
166
167
|
});
|
|
167
|
-
|
|
168
|
+
export const runtimeAssignmentLogReadContract = Object.freeze({
|
|
169
|
+
error: 'Runtime assignment log read contract rejected.',
|
|
170
|
+
/** The largest `limit` `getServiceRuntimeLogAttempts` accepts; a controller refuses a larger one. */
|
|
171
|
+
maximumAttemptPageSize: 256,
|
|
172
|
+
/** The largest `limit` `getRuntimeAssignmentLogs` accepts, counted in records. */
|
|
173
|
+
maximumPageRecords: 256,
|
|
174
|
+
/**
|
|
175
|
+
* The most entries the records of one log page hold together: four full batches. It keeps a page
|
|
176
|
+
* within the node count every captured value is held to; one batch always fits.
|
|
177
|
+
*/
|
|
178
|
+
maximumPageEntries: 4 * runtimeAssignmentLogContract.maximumEntriesPerBatch,
|
|
179
|
+
/**
|
|
180
|
+
* The canonical JSON of a whole log page is at most two mebibytes, and the controller closes a
|
|
181
|
+
* page before the next record would cross it. One batch always fits: its record is smaller than
|
|
182
|
+
* the report that carried it, which `maximumReportCanonicalBytes` bounded.
|
|
183
|
+
*/
|
|
184
|
+
maximumPageCanonicalBytes: 2 * runtimeAssignmentLogContract.maximumReportCanonicalBytes,
|
|
185
|
+
});
|
|
186
|
+
const readFail = () => { throw new Error(runtimeAssignmentLogReadContract.error); };
|
|
187
|
+
const readSafe = (operationArg) => { try {
|
|
188
|
+
return operationArg();
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return readFail();
|
|
192
|
+
} };
|
|
193
|
+
/** The canonical order of `reasons`. */
|
|
194
|
+
const truncationReasons = ['batch-cap', 'byte-cap', 'retention'];
|
|
195
|
+
const cursorOf = (valueArg) => valueArg === null ? null : networkId(valueArg);
|
|
196
|
+
const batchRecordOf = (valueArg) => {
|
|
197
|
+
const value = networkRecord(valueArg, ['kind', 'captureId', 'sequence', 'acceptedAt', 'final', 'entries']);
|
|
198
|
+
const entries = networkList(value.entries, runtimeAssignmentLogContract.maximumEntriesPerBatch, entryOf);
|
|
199
|
+
requireNetwork(value.kind === 'batch' && typeof value.final === 'boolean' && (entries.length > 0 || value.final));
|
|
200
|
+
return {
|
|
201
|
+
kind: 'batch', captureId: networkId(value.captureId), sequence: networkCounter(value.sequence),
|
|
202
|
+
acceptedAt: networkCounter(value.acceptedAt), final: value.final, entries,
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
const gapRecordOf = (valueArg) => {
|
|
206
|
+
const value = networkRecord(valueArg, ['kind', 'captureId', 'fromSequence', 'toSequence']);
|
|
207
|
+
const fromSequence = networkCounter(value.fromSequence), toSequence = networkCounter(value.toSequence);
|
|
208
|
+
requireNetwork(value.kind === 'gap' && fromSequence <= toSequence);
|
|
209
|
+
return { kind: 'gap', captureId: networkId(value.captureId), fromSequence, toSequence };
|
|
210
|
+
};
|
|
211
|
+
const truncationRecordOf = (valueArg) => {
|
|
212
|
+
const value = networkRecord(valueArg, ['kind', 'captureId', 'throughSequence', 'reasons', 'batches', 'bytes', 'entries']);
|
|
213
|
+
requireNetwork(value.kind === 'truncated');
|
|
214
|
+
const throughSequence = networkCounter(value.throughSequence);
|
|
215
|
+
const reasons = networkSorted(networkList(value.reasons, truncationReasons.length, (reasonArg) => {
|
|
216
|
+
requireNetwork(isOneOf(truncationReasons, reasonArg));
|
|
217
|
+
return reasonArg;
|
|
218
|
+
}), (reasonArg) => String(truncationReasons.indexOf(reasonArg)));
|
|
219
|
+
requireNetwork(reasons.length > 0);
|
|
220
|
+
return {
|
|
221
|
+
kind: 'truncated', captureId: networkId(value.captureId), throughSequence, reasons,
|
|
222
|
+
batches: networkCounter(value.batches, throughSequence), bytes: countOf(value.bytes), entries: countOf(value.entries),
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
const recordOf = (valueArg) => {
|
|
226
|
+
const kind = variantOf(valueArg, 'kind');
|
|
227
|
+
if (kind === 'batch')
|
|
228
|
+
return batchRecordOf(valueArg);
|
|
229
|
+
if (kind === 'gap')
|
|
230
|
+
return gapRecordOf(valueArg);
|
|
231
|
+
return truncationRecordOf(valueArg);
|
|
232
|
+
};
|
|
233
|
+
const opensWithNotKept = (recordArg) => {
|
|
234
|
+
const first = recordArg.entries[0];
|
|
235
|
+
return first !== undefined && first.kind === 'lost' && first.reason === 'not-kept';
|
|
236
|
+
};
|
|
237
|
+
/**
|
|
238
|
+
* Delivery order within a page. Each capture's records are contiguous and never return once
|
|
239
|
+
* another capture's began. A truncation only opens its capture. Every other record continues where
|
|
240
|
+
* the one before it ended: a gap at the next number, never right after another gap, and a batch at
|
|
241
|
+
* the next number or, past numbers the node skipped, opening with the `not-kept` loss that counts
|
|
242
|
+
* them. Nothing follows a final batch.
|
|
243
|
+
*/
|
|
244
|
+
const requireDeliveryOrder = (recordsArg) => {
|
|
245
|
+
const begun = new Set();
|
|
246
|
+
let previous = null;
|
|
247
|
+
for (const record of recordsArg) {
|
|
248
|
+
const continues = previous !== null && previous.captureId === record.captureId;
|
|
249
|
+
if (!continues) {
|
|
250
|
+
requireNetwork(!begun.has(record.captureId));
|
|
251
|
+
begun.add(record.captureId);
|
|
252
|
+
}
|
|
253
|
+
if (previous === null || !continues) {
|
|
254
|
+
previous = record;
|
|
255
|
+
continue;
|
|
256
|
+
}
|
|
257
|
+
requireNetwork(record.kind !== 'truncated' && !(previous.kind === 'batch' && previous.final));
|
|
258
|
+
const next = (previous.kind === 'batch' ? previous.sequence
|
|
259
|
+
: previous.kind === 'gap' ? previous.toSequence : previous.throughSequence) + 1;
|
|
260
|
+
if (record.kind === 'gap') {
|
|
261
|
+
requireNetwork(previous.kind !== 'gap' && record.fromSequence === next);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
requireNetwork(record.sequence === next || (record.sequence > next && opensWithNotKept(record)));
|
|
265
|
+
}
|
|
266
|
+
previous = record;
|
|
267
|
+
}
|
|
268
|
+
};
|
|
269
|
+
const attemptOf = (valueArg) => {
|
|
270
|
+
const value = networkRecord(valueArg, [
|
|
271
|
+
'serviceId', 'replicaId', 'nodeId', 'assignmentId', 'attemptId', 'issuedAt', 'lastAcceptedAt', 'expiresAt',
|
|
272
|
+
'captures', 'capturesEnded', 'keptBytes', 'truncatedBatches',
|
|
273
|
+
]);
|
|
274
|
+
requireNetwork(isRuntimeReplicaId(value.replicaId));
|
|
275
|
+
const issuedAt = networkCounter(value.issuedAt);
|
|
276
|
+
const lastAcceptedAt = value.lastAcceptedAt === null ? null : networkCounter(value.lastAcceptedAt);
|
|
277
|
+
const expiresAt = value.expiresAt === null ? null : networkCounter(value.expiresAt);
|
|
278
|
+
const captures = countOf(value.captures), capturesEnded = countOf(value.capturesEnded);
|
|
279
|
+
const keptBytes = countOf(value.keptBytes), truncatedBatches = countOf(value.truncatedBatches);
|
|
280
|
+
requireNetwork((expiresAt === null || expiresAt > Math.max(issuedAt, lastAcceptedAt ?? issuedAt))
|
|
281
|
+
&& capturesEnded <= captures);
|
|
282
|
+
// Nothing accepted means nothing captured, held or dropped.
|
|
283
|
+
requireNetwork(lastAcceptedAt !== null || (captures === 0 && keptBytes === 0 && truncatedBatches === 0));
|
|
284
|
+
return {
|
|
285
|
+
serviceId: networkId(value.serviceId), replicaId: value.replicaId, nodeId: networkNodeId(value.nodeId),
|
|
286
|
+
assignmentId: networkId(value.assignmentId), attemptId: networkId(value.attemptId), issuedAt, lastAcceptedAt,
|
|
287
|
+
expiresAt, captures, capturesEnded, keptBytes, truncatedBatches,
|
|
288
|
+
};
|
|
289
|
+
};
|
|
290
|
+
const pageLimitOf = (limitArg, maximumArg) => networkCounter(limitArg, maximumArg);
|
|
291
|
+
/** Detached exact-schema snapshot of one attempt view. */
|
|
292
|
+
export const snapshotRuntimeAssignmentLogAttemptView = (valueArg) => readSafe(() => attemptOf(captureNetwork(valueArg)));
|
|
293
|
+
/** Detached exact-schema snapshot of one attempt page, in its one order. */
|
|
294
|
+
export const snapshotRuntimeAssignmentLogAttemptPage = (valueArg) => readSafe(() => {
|
|
295
|
+
const value = networkRecord(captureNetwork(valueArg), ['attempts', 'nextCursor']);
|
|
296
|
+
const attempts = networkList(value.attempts, runtimeAssignmentLogReadContract.maximumAttemptPageSize, attemptOf);
|
|
297
|
+
attempts.forEach((attemptArg, indexArg) => {
|
|
298
|
+
const before = attempts[indexArg - 1];
|
|
299
|
+
requireNetwork(before === undefined || before.issuedAt > attemptArg.issuedAt
|
|
300
|
+
|| (before.issuedAt === attemptArg.issuedAt && before.assignmentId < attemptArg.assignmentId));
|
|
301
|
+
});
|
|
302
|
+
const nextCursor = cursorOf(value.nextCursor);
|
|
303
|
+
requireNetwork(nextCursor === null || attempts.length > 0);
|
|
304
|
+
return { attempts, nextCursor };
|
|
305
|
+
});
|
|
306
|
+
/** Detached exact-schema snapshot of one log page, bounded and in delivery order. */
|
|
307
|
+
export const snapshotRuntimeAssignmentLogPage = (valueArg) => readSafe(() => {
|
|
308
|
+
const value = networkRecord(captureNetwork(valueArg, runtimeAssignmentLogReadContract.maximumPageCanonicalBytes), ['attempt', 'records', 'nextCursor']);
|
|
309
|
+
const records = networkList(value.records, runtimeAssignmentLogReadContract.maximumPageRecords, recordOf);
|
|
310
|
+
requireNetwork(records.reduce((totalArg, recordArg) => totalArg + (recordArg.kind === 'batch' ? recordArg.entries.length : 0), 0)
|
|
311
|
+
<= runtimeAssignmentLogReadContract.maximumPageEntries);
|
|
312
|
+
requireDeliveryOrder(records);
|
|
313
|
+
const nextCursor = cursorOf(value.nextCursor);
|
|
314
|
+
requireNetwork(nextCursor === null || records.length > 0);
|
|
315
|
+
return { attempt: attemptOf(value.attempt), records, nextCursor };
|
|
316
|
+
});
|
|
317
|
+
/** Matches an attempt page to the read that asked for it: that service's attempts, within its limit. */
|
|
318
|
+
export const bindRuntimeAssignmentLogAttemptPage = (valueArg, serviceIdArg, limitArg) => readSafe(() => {
|
|
319
|
+
const page = snapshotRuntimeAssignmentLogAttemptPage(valueArg);
|
|
320
|
+
const limit = pageLimitOf(limitArg, runtimeAssignmentLogReadContract.maximumAttemptPageSize);
|
|
321
|
+
requireNetwork(page.attempts.length <= limit && page.attempts.every((attemptArg) => attemptArg.serviceId === serviceIdArg));
|
|
322
|
+
return page;
|
|
323
|
+
});
|
|
324
|
+
/** Matches a log page to the read that asked for it: that attempt of that service, within its limit. */
|
|
325
|
+
export const bindRuntimeAssignmentLogPage = (valueArg, serviceIdArg, assignmentIdArg, limitArg) => readSafe(() => {
|
|
326
|
+
const page = snapshotRuntimeAssignmentLogPage(valueArg);
|
|
327
|
+
const limit = pageLimitOf(limitArg, runtimeAssignmentLogReadContract.maximumPageRecords);
|
|
328
|
+
requireNetwork(page.records.length <= limit && page.attempt.serviceId === serviceIdArg
|
|
329
|
+
&& page.attempt.assignmentId === assignmentIdArg);
|
|
330
|
+
return page;
|
|
331
|
+
});
|
|
332
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZWFzc2lnbm1lbnRsb2dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvZGF0YS9ydW50aW1lYXNzaWdubWVudGxvZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHbEgsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEUsT0FBTyxFQUNMLGNBQWMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQ2pILGNBQWMsR0FDZixNQUFNLCtCQUErQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUF1SnRGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQ3hELEtBQUssRUFBRSwyQ0FBMkM7SUFDbEQsaUdBQWlHO0lBQ2pHLFFBQVEsRUFBRSxnREFBZ0Q7SUFDMUQ7Ozs7T0FJRztJQUNILE9BQU8sRUFBRSw0QkFBNEI7SUFDckM7Ozs7Ozs7T0FPRztJQUNILG9CQUFvQixFQUFFLEVBQUU7SUFDeEI7Ozs7O09BS0c7SUFDSCx3QkFBd0IsRUFBRSxtQkFBbUIsQ0FBQyx1QkFBdUI7SUFDckUscUNBQXFDO0lBQ3JDLHNCQUFzQixFQUFFLElBQUk7SUFDNUIsOEZBQThGO0lBQzlGLHFCQUFxQixFQUFFLE1BQU07SUFDN0I7OztPQUdHO0lBQ0gsMkJBQTJCLEVBQUUsU0FBUztDQUM5QixDQUFDLENBQUM7QUFFWixNQUFNLElBQUksR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFN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
|
|
@@ -25,8 +25,14 @@ export declare class RuntimeNetworkAddressPlanStructureError extends Error {
|
|
|
25
25
|
constructor(violationArg: IRuntimeNetworkAddressPlanStructureViolation);
|
|
26
26
|
}
|
|
27
27
|
export declare const networkSafe: <T>(operation: () => T) => T;
|
|
28
|
-
/**
|
|
29
|
-
export declare const
|
|
28
|
+
/** The canonical JSON bound every runtime network contract captures with, unless it states its own. */
|
|
29
|
+
export declare const networkMaximumCanonicalBytes = 1048576;
|
|
30
|
+
/**
|
|
31
|
+
* Bound decoded transport input before canonicalization; never execute getters/toJSON.
|
|
32
|
+
* `maximumBytes` bounds the whole value's canonical JSON; a single string stays within
|
|
33
|
+
* `networkMaximumCanonicalBytes` whatever the whole may hold.
|
|
34
|
+
*/
|
|
35
|
+
export declare const captureNetwork: (value: unknown, maximumBytes?: number) => unknown;
|
|
30
36
|
export declare const networkRecord: (value: unknown, keys: string[], optionalKeys?: string[]) => Record<string, unknown>;
|
|
31
37
|
export declare const networkList: <T>(value: unknown, maximum: number, read: (item: unknown) => T) => T[];
|
|
32
38
|
export declare const networkSorted: <T>(values: T[], key: (item: T) => string) => T[];
|
|
@@ -28,14 +28,20 @@ export const networkSafe = (operation) => {
|
|
|
28
28
|
return failNetwork();
|
|
29
29
|
}
|
|
30
30
|
};
|
|
31
|
-
/**
|
|
32
|
-
export const
|
|
31
|
+
/** The canonical JSON bound every runtime network contract captures with, unless it states its own. */
|
|
32
|
+
export const networkMaximumCanonicalBytes = 1_048_576;
|
|
33
|
+
/**
|
|
34
|
+
* Bound decoded transport input before canonicalization; never execute getters/toJSON.
|
|
35
|
+
* `maximumBytes` bounds the whole value's canonical JSON; a single string stays within
|
|
36
|
+
* `networkMaximumCanonicalBytes` whatever the whole may hold.
|
|
37
|
+
*/
|
|
38
|
+
export const captureNetwork = (value, maximumBytes = networkMaximumCanonicalBytes) => networkSafe(() => {
|
|
33
39
|
const encoder = new TextEncoder(), ancestors = new Set();
|
|
34
40
|
let nodes = 0, bytes = 0;
|
|
35
41
|
const account = (text) => {
|
|
36
|
-
requireNetwork(text.length <=
|
|
42
|
+
requireNetwork(text.length <= networkMaximumCanonicalBytes);
|
|
37
43
|
bytes += encoder.encode(text).length;
|
|
38
|
-
requireNetwork(bytes <=
|
|
44
|
+
requireNetwork(bytes <= maximumBytes);
|
|
39
45
|
};
|
|
40
46
|
const copy = (item, depth) => {
|
|
41
47
|
requireNetwork(++nodes <= 65_536 && depth <= 24);
|
|
@@ -81,7 +87,7 @@ export const captureNetwork = (value) => networkSafe(() => {
|
|
|
81
87
|
}
|
|
82
88
|
};
|
|
83
89
|
const result = copy(value, 0);
|
|
84
|
-
requireNetwork(encoder.encode(networkCanonical(result)).length <=
|
|
90
|
+
requireNetwork(encoder.encode(networkCanonical(result)).length <= maximumBytes);
|
|
85
91
|
return result;
|
|
86
92
|
});
|
|
87
93
|
export const networkRecord = (value, keys, optionalKeys = []) => {
|
|
@@ -247,4 +253,4 @@ export const networkCoveredBy = (prefixes, prefix) => {
|
|
|
247
253
|
}, 0);
|
|
248
254
|
return covered === last - first + 1;
|
|
249
255
|
};
|
|
250
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcHJpdmF0ZS9uZXR3b3JrY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUcsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFjLElBQW1CLElBQUksQ0FBQyxLQUFLO0lBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdkcsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBYSxFQUFFLEtBQWMsRUFBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFjM0g7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx1Q0FBd0MsU0FBUSxLQUFLO0lBQ2hELFNBQVMsQ0FBK0M7SUFFeEUsWUFBbUIsWUFBMEQ7UUFDM0UsS0FBSyxDQUFDLDBDQUEwQyxZQUFZLENBQUMsS0FBSyxlQUFlLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxJQUFJLEdBQUcseUNBQXlDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFB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
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya2NvbnRyYWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdHMvcHJpdmF0ZS9uZXR3b3JrY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLDRCQUE0QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDMUYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXRELE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxHQUFVLEVBQUUsR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDOUcsTUFBTSxVQUFVLGNBQWMsQ0FBQyxLQUFjLElBQW1CLElBQUksQ0FBQyxLQUFLO0lBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzVGLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBYyxFQUFVLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDdkcsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBYSxFQUFFLEtBQWMsRUFBVyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUM7QUFjM0g7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx1Q0FBd0MsU0FBUSxLQUFLO0lBQ2hELFNBQVMsQ0FBK0M7SUFFeEUsWUFBbUIsWUFBMEQ7UUFDM0UsS0FBSyxDQUFDLDBDQUEwQyxZQUFZLENBQUMsS0FBSyxlQUFlLFlBQVksQ0FBQyxJQUFJLFFBQVEsQ0FBQyxDQUFDO1FBQzVHLElBQUksQ0FBQyxJQUFJLEdBQUcseUNBQXlDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxZQUFZLENBQUMsSUFB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
|
|
@@ -11,6 +11,7 @@ import type { IDeploymentReservationInput, IServiceDeploymentOperation, IService
|
|
|
11
11
|
import type { TSha256Digest } from '../data/immutableimage.js';
|
|
12
12
|
import type { ILegacyServiceRuntimeAttestation } from '../data/deploymentlegacyimport.js';
|
|
13
13
|
import type { IProtocolOffer } from '../protocol.js';
|
|
14
|
+
import type { IRuntimeAssignmentLogAttemptPage, IRuntimeAssignmentLogPage } from '../data/runtimeassignmentlogs.js';
|
|
14
15
|
import type { IServiceRuntimeAssignmentView, IServiceRuntimeSpec, IServiceRuntimeStatus, TServiceRuntimeSpecWritableData } from '../data/serviceruntime.js';
|
|
15
16
|
import type { IServiceDeploymentAdoptionInput, IServiceDeploymentAdoptionImagePromotionInput, IServiceDeploymentAdoptionImagePromotionResult, IServiceDeploymentAdoptionRolloutInput, IServiceDeploymentAdoptionRolloutResult, IServiceDeploymentAdoptionPreflightInput, IServiceDeploymentAdoptionReport, IServiceDeploymentAdoptionResult } from '../data/deploymentadoption.js';
|
|
16
17
|
export interface IRequest_Any_Cloudly_BootstrapServiceDeploymentAdoptionRollout extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Any_Cloudly_BootstrapServiceDeploymentAdoptionRollout> {
|
|
@@ -466,6 +467,42 @@ export interface IRequest_Any_Cloudly_GetServiceRuntimeAssignments extends plugi
|
|
|
466
467
|
assignments: IServiceRuntimeAssignmentView[];
|
|
467
468
|
};
|
|
468
469
|
}
|
|
470
|
+
/**
|
|
471
|
+
* The attempts of one service whose workload logs Cloudly keeps, newest issued first, a page at a
|
|
472
|
+
* time: a slot's replaced and released attempts stay readable until their logs expire, which no
|
|
473
|
+
* single response bounds. `limit` runs from 1 to
|
|
474
|
+
* `runtimeAssignmentLogReadContract.maximumAttemptPageSize`; Cloudly refuses any other with
|
|
475
|
+
* `IRuntimeAssignmentLogReadErrorData`. `cursor` is null for the first page, then the page's own
|
|
476
|
+
* `nextCursor`. `bindRuntimeAssignmentLogAttemptPage` checks an answer against its read.
|
|
477
|
+
*/
|
|
478
|
+
export interface IRequest_Any_Cloudly_GetServiceRuntimeLogAttempts extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Any_Cloudly_GetServiceRuntimeLogAttempts> {
|
|
479
|
+
method: 'getServiceRuntimeLogAttempts';
|
|
480
|
+
request: {
|
|
481
|
+
identity: IIdentity;
|
|
482
|
+
serviceId: string;
|
|
483
|
+
cursor: string | null;
|
|
484
|
+
limit: number;
|
|
485
|
+
};
|
|
486
|
+
response: IRuntimeAssignmentLogAttemptPage;
|
|
487
|
+
}
|
|
488
|
+
/**
|
|
489
|
+
* One attempt's kept workload logs, a page at a time in delivery order, with the gaps Cloudly found
|
|
490
|
+
* and the truncations it made stated in place. `limit` counts records and runs from 1 to
|
|
491
|
+
* `runtimeAssignmentLogReadContract.maximumPageRecords`; a page also ends before it would cross
|
|
492
|
+
* `maximumPageEntries` or `maximumPageCanonicalBytes`, so it may hold fewer records than `limit`
|
|
493
|
+
* while `nextCursor` still names more. `bindRuntimeAssignmentLogPage` checks an answer against its read.
|
|
494
|
+
*/
|
|
495
|
+
export interface IRequest_Any_Cloudly_GetRuntimeAssignmentLogs extends plugins.typedrequestInterfaces.implementsTR<plugins.typedrequestInterfaces.ITypedRequest, IRequest_Any_Cloudly_GetRuntimeAssignmentLogs> {
|
|
496
|
+
method: 'getRuntimeAssignmentLogs';
|
|
497
|
+
request: {
|
|
498
|
+
identity: IIdentity;
|
|
499
|
+
serviceId: string;
|
|
500
|
+
assignmentId: string;
|
|
501
|
+
cursor: string | null;
|
|
502
|
+
limit: number;
|
|
503
|
+
};
|
|
504
|
+
response: IRuntimeAssignmentLogPage;
|
|
505
|
+
}
|
|
469
506
|
/**
|
|
470
507
|
* Cloudly -> admin UIs: a service's runtime spec, status or assignments changed. It carries no
|
|
471
508
|
* state, so a late or repeated push can never overwrite a newer read; the UI reads the views again.
|