Your browser sucks, JavaScript disabled! Gunnar's console needs JavaScript and WebAssembly. Git over SSH on port 2222 does not.

nordisk/edda

crates/nornir-flight/.nornir/design.md

nornir-flight — design

The constellation's ONE generic Apache Arrow Flight transport seam (LAW #5, reuse). Use-case-agnostic: raw Flight verbs (do_put / do_get / do_exchange) over RecordBatch, plus schema-agnostic FlightSink / FlightSource traits. Every real Flight use in nordisk — the build-info stream, skade-flight, a future knut Flight-shuffle — is an independent consumer on top of this transport, not a fork of it.

This is slice 1 of the build-info-flight design (workspace_nordisk/.nornir/build-info-flight-stream-design.md §f1) — the load-bearing dependency the rest builds on.


f0 — the whole

   producer ──do_put──►┌─ AUTH ─┐──►┌─ NornirFlightService ─┐──►  FlightSink::put
   (RecordBatch)       │ bearer │   │  do_put / do_get       │
   consumer ◄─do_get───┤ (reuse)│◄──┤  do_exchange           │◄──  FlightSource::get
                       └────────┘   └────────────────────────┘
                                     FlightServer::serve(routes, addr)
                                     over nornir_service::serve loop
                                     (TLS variant: serve_with_tls over
                                      nornir_service::serve_with_tls)

The seam is a pipe. It frames RecordBatches on/off the wire (Arrow-IPC), enforces the shared bearer auth, and routes bytes through two traits. It knows nothing about what the batches mean.

f1 — what is shared vs. what is not

f2 — the chosen design (only the chosen one; alternatives → reasoning)

f3 — acceptance (this slice)

f4 — reuse map

Concern Reuse New
gRPC serve loop + bearer auth edda/nornir-service (serve, auth_interceptor) —
TLS serve loop (feature tls) edda/nornir-service (serve_with_tls) — the same one holger-server uses FlightServer::serve_with_tls[_and_auth] + FlightConn::connect_tls wrappers
tonic Flight bootstrap pattern precedent: knut/graphar-flight/server.rs (separate use) generic NornirFlightService + FlightServer
Arrow Flight wire / IPC framing arrow-flight 56 (FlightDataEncoderBuilder, FlightRecordBatchStream) FlightSink/FlightSource seam + MemFlightStore
functional-status emit nornir-testmatrix::functional_status gated wrapper
HEAVY bench harness nornir-bench (Bencher, register_bench!) put/get throughput bencher

f5 — deferred (later slices / other agents)