Skip to content
This repository was archived by the owner on Jan 19, 2026. It is now read-only.
This repository was archived by the owner on Jan 19, 2026. It is now read-only.

Most RPC tests fail with DeadlineExceeded - handshake ordering violation #143

Description

@fasterthanlime

Summary

58 out of 146 tests are failing with DeadlineExceeded. The root cause appears to be a handshake ordering violation.

Root Cause

From the test output, we can see the actual error:

ERROR rapace_core::session: RpcSession::run: handshake failed e=Status { 
  code: InvalidArgument, 
  message: "[verify handshake.ordering]: first frame must be on channel 0, got 1" 
}

The client is sending a request frame on channel 1 before the handshake completes. The handshake requires the first frame to be a Hello on channel 0.

Affected Tests

All tests that use RpcSession::call() or streaming calls are affected:

  • rapace::arc_impl tests
  • rapace::result_return_type tests
  • rapace::method_ids_generation::test_end_to_end_with_method_ids
  • rapace-core::transport_conformance tests (mem_, shm_, stream_*)
  • rapace-cell::dispatcher_builder::test_multi_service_dispatch_e2e
  • rapace-diagnostics-over-rapace tests
  • rapace-http-over-rapace tests
  • rapace-http-tunnel integration tests
  • rapace-template-engine tests
  • rapace-tracing-over-rapace tests

Likely Fix

The issue is probably in how RpcSession is being used - calls are being made before session.run() has completed the handshake. Either:

  1. The client API needs to wait for handshake completion before allowing calls
  2. The test setup needs to ensure handshake completes before making calls
  3. There's a race condition in the session initialization

To Reproduce

cargo nextest run -p rapace arc_impl

Any test that makes RPC calls will fail with the same pattern.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions