Skip to content

datalake_fdw: the agent engine client (meta/engine_agent) #2012

Description

@MisterRaindrop

Part of #2008. Letters (A, B0–B7, C, D, E) are the PRs listed there; this is B2.

Scope

src/meta/engine_agent/: the first real IcebergMetaEngine, default in place of the stub (the stub stays for tests).

  • C dispatch over a C++ gRPC layer behind the DlErrCode ABI: no exception or longjmp crosses it; agent error detail lands in dl_error_set.
  • Stubs generated at build time from B0 (protoc plus the gRPC C++ plugin); grpc++ detected under --enable-datalake-fdw.
  • A GUC for the agent address: Unix socket by default, TCP with a token file when set.
  • Deadline, cancel polling and a wait event while a call is in flight; handshake on first call; RPC count and time in EXPLAIN ANALYZE.
  • Conformance suite: the same scenarios against the stub and against B1. Against B1 it proves the plumbing (handshake, cancel, deadline, agent down, error detail); B3 and B4 turn it fully green.
  • CI job: build the B1 jar, start it on a socket, run the suite.

Out of scope

Builtin engine (B4), the proxy.

Depends on

B0; tested against B1.

Acceptance

  • Agent down: clear error within the deadline, transaction rolls back, nothing hangs.
  • Cancel mid-call returns promptly with no leaked channel.
  • Version mismatch refused naming both versions.
  • nm -D exports only PostgreSQL entry points (no grpc++/protobuf); builds with and without the gate; Arrow 9 and 17.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    datalakecontrib/datalake_fdw and contrib/datalake_agent: Iceberg lake tables

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions