Implement crash-safe streaming worker runtime
This commit is contained in:
parent
16cba3c317
commit
cdeef3cc1a
2 changed files with 7448 additions and 194 deletions
|
|
@ -113,6 +113,8 @@ export interface AttemptRuntimeFailureDto {
|
|||
|
||||
export interface ResultDescriptorDto {
|
||||
kind: 'manifest'
|
||||
manifest_id: OpaqueIdDto
|
||||
schema_version: number
|
||||
manifest: ObjectIdentityDto
|
||||
member_count: number
|
||||
total_bytes: number
|
||||
|
|
@ -124,6 +126,7 @@ export interface ObjectIdentityDto {
|
|||
key: string
|
||||
version_id?: string
|
||||
checksum: string
|
||||
size: number
|
||||
}
|
||||
|
||||
export interface JobPhaseProjectionDto {
|
||||
|
|
|
|||
|
|
@ -277,10 +277,19 @@ function decodeEventProgress(value: unknown): EventProgressDto {
|
|||
|
||||
function decodeResult(value: unknown): ResultDescriptorDto {
|
||||
const object = record(value)
|
||||
exactKeys(object, ['kind', 'manifest', 'member_count', 'total_bytes'])
|
||||
exactKeys(object, [
|
||||
'kind',
|
||||
'manifest_id',
|
||||
'schema_version',
|
||||
'manifest',
|
||||
'member_count',
|
||||
'total_bytes',
|
||||
])
|
||||
if (object.kind !== 'manifest') throw new Error('unknown result kind')
|
||||
return {
|
||||
kind: 'manifest',
|
||||
manifest_id: opaqueId(string(object.manifest_id)),
|
||||
schema_version: positiveInteger(object.schema_version),
|
||||
manifest: decodeObjectIdentity(object.manifest),
|
||||
member_count: positiveInteger(object.member_count),
|
||||
total_bytes: nonnegativeInteger(object.total_bytes),
|
||||
|
|
@ -289,7 +298,14 @@ function decodeResult(value: unknown): ResultDescriptorDto {
|
|||
|
||||
function decodeObjectIdentity(value: unknown): ObjectIdentityDto {
|
||||
const object = record(value)
|
||||
exactKeys(object, ['store', 'bucket', 'key', 'version_id', 'checksum'])
|
||||
exactKeys(object, [
|
||||
'store',
|
||||
'bucket',
|
||||
'key',
|
||||
'version_id',
|
||||
'checksum',
|
||||
'size',
|
||||
])
|
||||
return {
|
||||
store: string(object.store),
|
||||
bucket: string(object.bucket),
|
||||
|
|
@ -298,6 +314,7 @@ function decodeObjectIdentity(value: unknown): ObjectIdentityDto {
|
|||
? {}
|
||||
: { version_id: string(object.version_id) }),
|
||||
checksum: string(object.checksum),
|
||||
size: nonnegativeInteger(object.size),
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue