Task: Add missing EXPORT macros to service classes
Table of Contents
This page documents a task in the Fix missing ORES_REFDATA_CORE_EXPORT on refdata/scheduler service classes story. It captures the goal, current status, acceptance, and any notes or results.
Goal
Every *_service class meant to be called across .so boundaries (party_service, portfolio_service, and 17 other refdata services, plus scheduler's job_definition_service) is missing its ORES_<COMPONENT>_CORE_EXPORT annotation. With the project's -fvisibility=hidden default, this makes their methods unresolvable from any other shared library or executable, surfacing as undefined-reference linker errors (discovered via ores.iam.core.tests failing to link against party_service::get_party_at_version and counterparty_service::get_counterparty_at_version, and counterparty_repository::read_at_version needing a stale .o recompile). Add the export.hpp include and EXPORT macro to every affected class; leave *_mapper classes alone since those are internal-only, never called cross-.so.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent story | Fix missing ORES_REFDATA_CORE_EXPORT on refdata/scheduler service classes |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-07-09 |
Acceptance
- All 19 ores.refdata.core service classes and ores.scheduler.core's job_definition_service carry their EXPORT macro.
- ores.iam.core.tests and a full project build link cleanly with no undefined-reference errors.
Plan
(Implementation strategy. Written when work starts; key decisions
are distilled into the parent story's * Decisions at close, but the
plan itself stays — it is the historical record of what we did.)
Notes
Test Scenarios
Manual QA scenarios (scaffolded via compass add test_scenario, run
through the QA Validation Runner panel) that verify this task. Link
new ones here as they're created; the scenario doc itself links back
via its "Verifies task" field.
| Scenario | State | Notes |
|---|---|---|
PRs
| PR | Title |
|---|---|
| #1482 | [refdata,scheduler] Fix missing EXPORT macros on 20 service classes |
Review
| Comment summary | File | Decision | Notes |
|---|---|---|---|
Result
Added the export.hpp include and ORES_REFDATA_CORE_EXPORT=/=ORES_SCHEDULER_CORE_EXPORT
macro to all 19 affected ores.refdata.core service classes plus
ores.scheduler.core's job_definition_service; *_mapper classes were
deliberately left alone as internal-only. Also touched
counterparty_repository.cpp to force a recompile of a stale .o missing
read_at_version. Verified with a full clean build and a full local rat
run (54 suites, all green) — no undefined-reference errors remain.