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.
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 realIcebergMetaEngine, default in place of the stub (the stub stays for tests).DlErrCodeABI: no exception or longjmp crosses it; agent error detail lands indl_error_set.protocplus the gRPC C++ plugin); grpc++ detected under--enable-datalake-fdw.EXPLAIN ANALYZE.Out of scope
Builtin engine (B4), the proxy.
Depends on
B0; tested against B1.
Acceptance
nm -Dexports only PostgreSQL entry points (no grpc++/protobuf); builds with and without the gate; Arrow 9 and 17.