v5.1.0
Summary
This release introduces multi-engine schema support (JSON Schema + LinkML), a schema factory abstraction for the core server, full schema CLI support in the Python client, and correlation ID propagation through database maintenance paths. Infrastructure improvements include core unit tests in CI, consolidated Foxx test database configuration, and removal of dead code.
Images
docker pull savannah.ornl.gov/datafed/core:v5.1.0
docker pull savannah.ornl.gov/datafed/web:v5.1.0
docker pull savannah.ornl.gov/datafed/foxx:v5.1.0
docker pull savannah.ornl.gov/datafed/gcs:v5.1.0
docker pull savannah.ornl.gov/datafed/repo:v5.1.0
MINOR - Features & Enhancements
New functionality and improvements that maintain backward compatibility
[DAPS-1855] - feature: core - Add SchemaServiceFactory to decouple schema validation and storage logic (#1891)
- Introduces
ISchemaValidator,ISchemaStorage, andSchemaServiceFactoryabstractions SchemaHandlerextracted fromClientWorkerinto dedicated handler class- Supports pluggable schema engines:
json-schema(ArangoDB-backed) andlinkml(external SchemaDBApi)
[DAPS-1912] - refactor: core - Register LinkML storage engine with schema handler (#1912)
[DAPS-1902] - feature: core, common - Get schema API client into compliance with API spec file (#1903)
SchemaAPIClientupdated to match OpenAPI spec for external schema service communication
[DAPS-1893] - feature: common - Proto3 add fields for schema type, format, and metadata format (#1894)
SchemaCreateRequestgainstype(field 6) andformat(field 7)SchemaDatagainstype(field 13) andformat(field 14)MetadataValidateRequestgainsformat(field 3)- Additive proto3 changes; existing clients remain wire-compatible
[DAPS-1896] - feature: foxx - Schema format and type added to schema create API (#1897)
- Schema create and revise endpoints accept
typeandformatfields - Schema ID responses now include version suffix (e.g.
"my_schema:0"instead of"my_schema")
[DAPS-1830] - refactor: core, foxx - Refactored JSON schema integration (#1892, #1899, #1898)
- Foxx routers use dynamic
db_config.jsfor graph/database name instead of hardcoded"sdmsg" - New
db_env.jsprovides shared environment configuration for arangosh scripts JsonSchemaValidatorandExternalSchemaValidatorimplementISchemaValidatorinterfaceArangoSchemaStorageandExternalSchemaStorageimplementISchemaStorageinterface
[DAPS-1663] - feature: core - LogContext and correlation ID propagated to dbGetRaw, dbMaintenance, metricThread, and TaskWorker (#1885)
IAuthenticationManagerinterface methods now acceptLogContextparameterDatabaseAPI::dbGetRawforwardsx-correlation-idheader to Foxx via curlpurgeTransferRecordsanduidByPubKeygainLogContextpropagation
[DAPS-1857] - feature: python_client - Schema CLI commands and CommandLib API support (#1859, #1895)
- New
schemacommand group:view,create,revise,update,search,delete,export,list CommandLib.APIgains corresponding methods:schemaCreate,schemaRevise,schemaUpdate,schemaView,schemaSearch,schemaDelete,schemaExport,schemaList- Supports
--type(json-schema|linkml) and--format(json|yaml) options - Handles protobuf
defreserved keyword viasetattr/getattrworkaround
[DAPS-1919] - feature: python, web - Support LinkML schema type (#1921)
- Web UI schema dialogs support schema type selection and format-aware editing
- Python client passes schema type through create/revise workflows
[DAPS-1906-1] - feature: ci - Add core unit testing to CI pipeline (#1907)
- New
run-core-unit-jobstage runs CTest from intermediate build image - Filters out integration and fixture tests via
-LE "integration|fixture"
PATCH - Bug Fixes, Technical Debt & Improvements
Bug fixes, refactoring, documentation, and other improvements
[DAPS-1914] - fix: web - Bug in schema ID name/version mismatch (#1915)
- Schema picker now strips version suffix before re-appending, preventing double-suffixed IDs
[DAPS-1890] - fix: test - Mock core server build (#1890)
- Mock
AuthMap,AuthenticationManager,ClientWorker, andConditionupdated forLogContextinterface changes - Mock
PublicKeyTypes.hppaligned with core server types
[DAPS-1913] - refactor: foxx - CI test scripts consolidate database name and default to separate database for tests (#1917)
- Test scripts read
DATAFED_DATABASE_NAMEfrom environment, defaulting tosdms_test - New
DATAFED_ALLOW_TESTING_PROD_DATABASEguard prevents accidental production database use in tests ALLOW_PRODUCTION_DBenvironment variable required to run against production database name
[DAPS-1916] - tests: core - Add integration tests for schema client handler to CMake (#1918)
- Integration test suites for
SchemaHandlerJson,SchemaHandlerLinkML,SchemaAPIClient, andSchemaServiceFactory - CTest fixtures manage Docker containers (ArangoDB, Prism mock) for integration tests
[DAPS-1887] - refactor: repo - Remove dead FUSE filesystem code (#1888)
- Deleted
repository/filesys/CMakeLists.txtandrepository/filesys/fusemain.cpp
[DAPS-1910] - upgrade: web - Playwright 1.51.1 version (#1911)
[DAPS-1830] - refactor: common - TraceException::getErrorCode() marked const
Migration Notes
Foxx schema ID format change: Schema API responses now return composite IDs with version suffix (e.g. "my_schema:0" instead of "my_schema"). All internal consumers (core server, web UI, Python client) are updated in this release. External tools parsing Foxx schema responses directly will need to account for the new format.
Test database safety: Foxx test infrastructure now defaults to sdms_test database. CI pipelines targeting the production sdms database must set ALLOW_PRODUCTION_DB=true and DATAFED_DATABASE_NAME=sdms.
Contributors
- Co-authored-by: Joshua S Brown [brownjs@ornl.gov](mailto:brownjs@ornl.gov)
- Co-authored-by: Blake Nedved [blakeanedved@gmail.com](mailto:blakeanedved@gmail.com)
- Co-authored-by: Blake Nedved [nedvedba@ornl.gov](mailto:nedvedba@ornl.gov)
- Co-authored-by: Austin Hampton [amh107@latech.edu](mailto:amh107@latech.edu)
- Co-authored-by: Polina Shpilker [infinite.loopholes@gmail.com](mailto:infinite.loopholes@gmail.com)
Full Changelog: v5.0.0...v5.1.0