MOC — Stateless Container (jDisc)

Every Vespa request first enters a stateless container cluster called jDisc: a jDisc core layer
(protocol-independent request/response over a model of the running application), a jDisc
container layer (component management, config, OSGi), a search middleware layer (query/result
APIs and execution), and document-operation APIs. Entirely Java. (Description from
vespa/Code-map.md; sizes from first-hand find/wc inspection of the workspace.)

Modules

  • vespa/jdisc_core — core jDisc functionality (223 src files, ~28k LOC).
  • vespa/container-disc — container core: metrics, OSGi component bundles, dependency
    injection, HTTP connector, glue to jDisc core (583 files, ~58k LOC).
  • vespa/component — the component model that Java components subclass (24 files, ~2k LOC).
  • vespa/container-search — Searcher framework over the generic processing chain, query
    profiles, global query execution: dispatch (scatter-gather), grouping (1202 files, ~171k LOC —
    largest container module).
  • vespa/document — document model: documents, fields, document types, operations (Java+C++).
  • vespa/messagebus — generic async multi-hop message passing (Java+C++).
  • vespa/container-messagebus — MessageBus connector for jDisc.
  • vespa/documentapi — API for document operations over message bus.
  • vespa/docproc / vespa/docprocs — chainable document processors and bundled components
    (incl. the Indexingprocessor).
  • vespa/indexinglanguage — the “indexing:” statement language for search definitions.
  • vespa/vespaclient-container-plugin — implements document/v1 + internal API over jDisc.
  • vespa/vespa-feed-client — fast write client against that internal API.

Related but unmapped in Code-map (observed in vespa/): container-dev, container-test,
container-documentapi, container-search-and-docproc, container-llama,
container-onnxruntime, container-opentelemetry.

Anchor files

  • vespa/jdisc_core/ — start at the request-dispatch and application-model packages (exact
    entry class pending human verification).
  • vespa/container-disc/ — component/OSGi wiring and HTTP connector.
  • vespa/container-search/src/ — Searchers, query profiles, dispatch/grouping execution.
  • vespa/document/src/ — document model types.
  • vespa/messagebus/src/ — routing and multi-hop message passing.

Open questions

  • Pin down 3-5 concrete file-level “read first” paths (e.g. which class in container-search
    implements the Query API entry?).
  • Where do container-dev / container-search-and-docproc fit — build aggregations or code?
  • Do the C++ halves of document and messagebus belong here or in content-nodes?