Add a Flink REST endpoint for checkpoint summary
Codex should identify guardrails, Flink 2.2 docs, Java implementation anchors, route registration, message classes, and tests before editing code.
Interactive view of how Codex uses K2 collections, Agents, Knowledge Feed, and Pipeline context before producing a Java patch.
Codex should identify guardrails, Flink 2.2 docs, Java implementation anchors, route registration, message classes, and tests before editing code.
Each card maps a K2 feature to the development value shown in this demo.
K2 keeps Confluence-style guidance, versioned documentation, source, and tests queryable without mixing their roles.
Framework, version, source kind, module, package, class, API surface, and path metadata keep answers scoped.
Dense retrieval helps with conceptual questions, while sparse matching protects exact Java class and method names.
Guide, docs, code, and architect agents each answer a bounded part of the development question.
The feed loop can promote recurring source findings back into the guide corpus for future sessions.
The Pipeline Spec shows the topology; MCP makes the same Codex workflow use K2 context before editing.
Add a backwards-compatible `includeMissing` query parameter to Flink 2.2 `JobVertexWatermarksHandler`; default behavior must stay unchanged, and focused handler tests must cover default, partial, and include-missing behavior.
Changes:
- Added a local watermark-specific message-parameters subclass.
- Added the optional boolean query parameter `includeMissing`, defaulting to `false`.
- Updated `JobVertexWatermarksHandler` to preserve existing behavior when absent or false.
- Expanded `JobVertexWatermarksHandlerTest` to cover default behavior, partial availability,
explicit `includeMissing=true`, and explicit `includeMissing=false`.
Tests:
`mvn -pl flink-runtime -P!java21 -Dtest=JobVertexWatermarksHandlerTest ... test` passed.
Remaining uncertainty:
Validation was limited to the focused handler test.
Implemented the vertex watermark REST extension with backward-compatible
optional missing-subtask reporting.
What changed:
- Added `includeMissing` for the watermark endpoint.
- Introduced `JobVertexWatermarksMessageParameters`.
- Updated `JobVertexWatermarksHandler` so default behavior stays the same.
- Extended `JobVertexWatermarksHandlerTest` with an include-missing case.
Sources consulted:
- repo://apache/flink@release-2.2.0/.../JobVertexWatermarksHandler.java
- repo://apache/flink@release-2.2.0/.../JobVertexWatermarksHandlerTest.java
- https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/ops/rest_api/#part-0047
- generated://guides/flink/rest-handler-checklist.md
The source agent finds implementation details that are too specific for generic model memory.
The feed turns repeated code discoveries into durable guide material for the team.
Future Codex sessions can retrieve the learned pattern through the guides agent before editing.
diff --git a/.../JobVertexWatermarksHandler.java b/.../JobVertexWatermarksHandler.java
+import org.apache.flink.runtime.rest.handler.util.HandlerRequestUtils;
+import org.apache.flink.runtime.rest.messages.job.metrics.IncludeMissingQueryParameter;
+final boolean includeMissing =
+ HandlerRequestUtils.getQueryParameter(
+ request, IncludeMissingQueryParameter.class, false);
-if (watermarkValue != null) {
+if (watermarkValue != null || includeMissing) {
metrics.add(new Metric(id, watermarkValue));
}
answer style:
No retrieved K2 source URI list; final response summarizes local files changed.
diff --git a/.../JobVertexWatermarksHandler.java b/.../JobVertexWatermarksHandler.java
+import org.apache.flink.runtime.rest.messages.job.metrics.IncludeMissingQueryParameter;
+import org.apache.flink.runtime.rest.messages.job.metrics.JobVertexWatermarksMessageParameters;
-extends AbstractJobVertexHandler<MetricCollectionResponseBody, JobVertexMessageParameters>
+extends AbstractJobVertexHandler<
+ MetricCollectionResponseBody, JobVertexWatermarksMessageParameters>
+final boolean includeMissingMetrics =
+ request.getQueryParameter(IncludeMissingQueryParameter.class)
+ .contains(Boolean.TRUE);
-if (watermarkValue != null) {
+if (watermarkValue != null || includeMissingMetrics) {
metrics.add(new Metric(id, watermarkValue));
}
new file: IncludeMissingQueryParameter.java
+public class IncludeMissingQueryParameter extends MessageQueryParameter<Boolean> {
+ private static final String QUERY_PARAMETER_NAME = "includeMissing";
+ public IncludeMissingQueryParameter() {
+ super(QUERY_PARAMETER_NAME, MessageParameter.MessageParameterRequisiteness.OPTIONAL);
+ }
+}
new file: JobVertexWatermarksMessageParameters.java
+public class JobVertexWatermarksMessageParameters
+ extends JobVertexMessageParameters {
+ public Collection<MessageQueryParameter<?>> getQueryParameters() {
+ return Collections.singleton(includeMissingParameter);
+ }
+}
test result:
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0
BUILD SUCCESS
sources cited:
repo://apache/flink@release-2.2.0/.../JobVertexWatermarksHandler.java
repo://apache/flink@release-2.2.0/.../JobVertexWatermarksHandlerTest.java
https://nightlies.apache.org/flink/flink-docs-release-2.2/docs/ops/rest_api/
generated://guides/flink/rest-handler-checklist.md