Skip to content

Run invoker memory test ts#427

Open
tillrohrmann wants to merge 20 commits into
restatedev:mainfrom
tillrohrmann:run-invoker-memory-test-ts
Open

Run invoker memory test ts#427
tillrohrmann wants to merge 20 commits into
restatedev:mainfrom
tillrohrmann:run-invoker-memory-test-ts

Conversation

@tillrohrmann
Copy link
Copy Markdown
Contributor

No description provided.

tillrohrmann and others added 20 commits May 26, 2026 18:12
…g the test time

Keep sending PING requests for measuring the RTT to the service deployment
Introduce a switch (INVOKER_MEMORY_TEST_SDK=ts) that runs the
MemoryPressureService/StatefulObject backing handlers in a separate
Node container instead of in-process JVM, so the SDK side of the
stall can be exercised against a non-Vert.x implementation. The
Kotlin in-process path remains the default; CI now soaks both via
a new sdk matrix dimension.

- e2e-tests/services/invoker-memory-ts: TS sources, Dockerfile, and
  README documenting the multi-arch ghcr.io publish command.
- infra: add Builder.withServiceDeploymentConfig so a test can
  register a per-test container image without going through the
  global --service-container-image flag.
- InvokerMemoryTest: branch the deployer between in-process bind
  and the TS image; gate JVM-only diagnostics (heap log, watchdog
  heap field, thread dump on timeout) on the Kotlin path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a third value for INVOKER_MEMORY_TEST_SDK — `kotlin-container` —
that runs the same MemoryPressureService and StatefulObject in a
separate JVM Docker container instead of in-process. Lets us compare
in-process vs out-of-process for the same Kotlin SDK code, isolating
that variable from the "JVM SDK vs Node SDK" axis covered by the
existing `ts` mode.

- Extract the two service classes into a new
  :invoker-memory-kotlin-contracts library module so both the test
  JVM (typed handles + in-process bind) and the new service JAR
  consume one source of truth.
- Add :invoker-memory-kotlin-service (application + shadow JAR) that
  binds both services and starts the Vert.x HTTP/2 server via
  RestateHttpServer.listen. Single-stage Dockerfile on
  eclipse-temurin:21-jre-alpine; README documents the multi-arch
  ghcr.io publish flow and calls out the SDK drift hazard.
- Switch InvokerMemoryTest to a tri-state SDK_MODE and widen the
  JVM-only diagnostic gates (heap log, watchdog heap field, thread
  dump on timeout) from !USE_TS_SERVICE to !USE_CONTAINER_SERVICE so
  both container modes skip them.
- CI matrix already exercises `ts`; extend to `kotlin-container`
  alongside.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant