[Feature]: Custom subtype for step, callback, and child context operations
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 55/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- java
- Área
- backend-api-design
Línea de trabajo
Start with the StepConfig, CallbackConfig, and RunInChildContextConfig builders, then trace OperationIdentifier through checkpoint updates, replay validation, OperationInfo, and PluginInfoConverter. Implement optional subtype propagation and validation while preserving existing defaults, and verify that custom values appear consistently in execution history and plugin information. Check the sdk-testing local runner only if that optional validation is included.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What would you like?
Let a caller set a custom subtype on a step, a callback, and a child context.
- A function can compose several durable operations into one larger operation. #571 proposes a public API for such extension operations.
- Every operation records a subtype in its checkpoint. Execution history and plugins read it.
- In Java, the subtype always comes from the
OperationSubTypeenum.StepConfig,CallbackConfig, andRunInChildContextConfighave no subtype option. The overload ofrunInChildContextAsyncthat takes a subtype is private. - So the parts of an extension operation all record
Step,Callback, orRunInChildContext. History and plugins can tell them apart only by parsing their names.
The JS SDK supports this today: ChildConfig.subType, and since aws/aws-durable-execution-sdk-js#939, StepConfig.subType and CreateCallbackConfig.subType. The Go SDK has WithChildSubType.
Possible Implementation
- Add an optional
subType(String)to the builders ofStepConfig,CallbackConfig, andRunInChildContextConfig. OperationIdentifierholds anOperationSubType, and derives the operation type from it. A custom subtype is a string with no enum value. So the identifier needs the operation type and the subtype string as separate fields. The enum stays as the source of the default subtypes.- Use the custom subtype everywhere the default is used today: checkpoint updates, replay validation, and plugin info (
OperationInfoand the classes built byPluginInfoConverter). - Validate the value before the operation is created:
- A null or empty value selects the default.
- The service accepts 1 to 32 characters from
[a-zA-Z0-9-_]. It rejects any other subtype with HTTP 400ValidationException, and the execution then fails. So the SDK should reject such a value with a clear error. - Optionally reject the values the SDK uses for its own operations, as the Go SDK does.
- Optionally, make the local runner in
sdk-testingreject an invalid subtype with the service's message, as the JS testing SDK does since aws/aws-durable-execution-sdk-js#939.
Nothing in the SDK decides how to suspend or retry from the subtype. So no other logic needs to change.
Is this a breaking change?
No. Without the option, the SDK records the same subtypes as today. The OperationIdentifier change in step 2 touches internal types only.
Does this require an RFC?
No.
Additional Context
- Replay compares the subtype with the checkpoint. So changing a subtype is a breaking change for executions in flight. The option's Javadoc should say this.
- #396 added fixed subtypes to every operation. This issue adds caller-chosen ones on top.
- Lenguaje dominante
- Java
- Estrellas
- 28
- Forks
- 13
- Merge medio
- 2 d 8 h
- PR fusionados (30 d)
- 40
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de aws/aws-durable-execution-sdk-java
-
bug pkg:sdk
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
aws/aws-durable-execution-sdk-java#773 ·
Los mantenedores suelen responder en 1 día
-
documentation pkg:sdk
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
aws/aws-durable-execution-sdk-java#645 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
aws/aws-durable-execution-sdk-java#300 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: root handler instrumentation misses the canonical OTel execution contextPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoneeds-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 40/100
aws/aws-durable-execution-sdk-java#770 ·
Los mantenedores suelen responder en 1 día
-
[Feature]: Propagate per-operation trace context for chained invokesPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertoenhancement needs-triage
Dificultad 5/5 Más de una semana Aptitud para principiantes 38/100
aws/aws-durable-execution-sdk-java#764 ·
Los mantenedores suelen responder en 1 día
Todos los issues de aws/aws-durable-execution-sdk-java
Issues similares
-
component/operate kind/feature-request
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 1 día
-
Forge coverage prompts carry text the agent cannot act onPosiblemente ocupada @graalvmbot la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
oracle/graalvm-reachability-metadata#10572 ·
Los mantenedores suelen responder en 1 día
-
[CI] Core CI doesn't run for changes to amoro-format-lance (and amoro-web)Posiblemente ocupada @MarkAlex1234 la tomó hoy. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
-
area/docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día