Implement crash-safe streaming worker runtime

This commit is contained in:
ms2k 2026-07-17 18:51:44 +09:00
commit cdeef3cc1a

View file

@ -472,6 +472,86 @@ paths:
$ref: '#/components/responses/PreconditionFailed'
default:
$ref: '#/components/responses/Error'
/internal/v1/attempts/{attempt_id}/stop:
parameters:
- $ref: '#/components/parameters/AttemptId'
post:
operationId: stopAttempt
security:
- serviceAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttemptStopRequest'
responses:
'204':
description: The exact attempt has cooperatively stopped, or no further stop action is required.
'409':
$ref: '#/components/responses/PreconditionFailed'
default:
$ref: '#/components/responses/Error'
/internal/v1/attempts/{attempt_id}/staging/write-intent:
parameters:
- $ref: '#/components/parameters/AttemptId'
post:
operationId: registerAttemptStagingWriteIntent
security:
- serviceAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttemptStagingWriteIntentRequest'
responses:
'204':
description: Exact staging key intent durably registered before target I/O.
'409':
$ref: '#/components/responses/PreconditionFailed'
default:
$ref: '#/components/responses/Error'
/internal/v1/attempts/{attempt_id}/staging/object:
parameters:
- $ref: '#/components/parameters/AttemptId'
post:
operationId: registerAttemptStagingObject
security:
- serviceAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttemptStagingObjectRequest'
responses:
'204':
description: Exact completed staging object identity durably registered.
'409':
$ref: '#/components/responses/PreconditionFailed'
default:
$ref: '#/components/responses/Error'
/internal/v1/attempts/{attempt_id}/staging/multipart:
parameters:
- $ref: '#/components/parameters/AttemptId'
post:
operationId: registerAttemptStagingMultipart
security:
- serviceAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AttemptStagingMultipartRequest'
responses:
'204':
description: Exact staging multipart identity durably registered.
'409':
$ref: '#/components/responses/PreconditionFailed'
default:
$ref: '#/components/responses/Error'
/internal/v1/attempts/{attempt_id}/resolved-source:
parameters:
- $ref: '#/components/parameters/AttemptId'
@ -1653,6 +1733,88 @@ components:
unevaluatedProperties: false
allOf:
- $ref: '#/components/schemas/AttemptMutation'
AttemptStopRequest:
unevaluatedProperties: false
allOf:
- $ref: '#/components/schemas/AttemptMutation'
StagingObjectIdentity:
type: object
additionalProperties: false
required: [store, bucket, key]
properties:
store:
type: string
minLength: 1
bucket:
type: string
minLength: 1
key:
type: string
minLength: 1
version_id:
type: string
minLength: 1
StagingWriteIntent:
type: object
additionalProperties: false
required: [store, bucket, key]
properties:
store:
type: string
minLength: 1
bucket:
type: string
minLength: 1
key:
type: string
minLength: 1
StagingMultipartIdentity:
type: object
additionalProperties: false
required: [store, bucket, key, upload_id]
properties:
store:
type: string
minLength: 1
bucket:
type: string
minLength: 1
key:
type: string
minLength: 1
upload_id:
type: string
minLength: 1
AttemptStagingObjectRequest:
unevaluatedProperties: false
allOf:
- $ref: '#/components/schemas/AttemptMutation'
- type: object
required: [object]
properties:
object:
$ref: '#/components/schemas/StagingObjectIdentity'
completed_upload_id:
type: string
minLength: 1
AttemptStagingWriteIntentRequest:
unevaluatedProperties: false
allOf:
- $ref: '#/components/schemas/AttemptMutation'
- type: object
required: [intent]
properties:
intent:
$ref: '#/components/schemas/StagingWriteIntent'
AttemptStagingMultipartRequest:
unevaluatedProperties: false
allOf:
- $ref: '#/components/schemas/AttemptMutation'
- type: object
required: [multipart]
properties:
multipart:
$ref: '#/components/schemas/StagingMultipartIdentity'
AttemptResolvedSourceRequest:
unevaluatedProperties: false
allOf:
@ -1689,6 +1851,8 @@ components:
validated_members:
type: integer
minimum: 0
staging_multipart:
$ref: '#/components/schemas/StagingMultipartIdentity'
AttemptProgressRequest:
unevaluatedProperties: false
allOf: