Repository navigation
Module core Architecture
Navigation: Home > Modules
Architektur-Hinweis: Klassen/Typen/Namespaces mit aktuellem Sourcecode abgleichen. Symbole, die nicht im Source gefunden werden, mit `` markieren.
Version: 1.1
Last Updated: 2026-09-09
Module Path: src/core/
The Core module provides ThemisDB's cross-cutting concerns infrastructure through a Dependency Injection (DI) framework. It defines abstract interfaces for logging, distributed tracing, metrics collection, and caching, and supplies production-ready adapters (spdlog, OpenTelemetry) as well as no-op implementations for testing.
Every other module that needs to log, trace, or record metrics calls through the
ConcernsContext service container rather than depending directly on spdlog or OpenTelemetry.
This allows test code to inject silent/mock adapters without touching production code.
-
Interface β Adapter Pattern β each concern (
ILogger,ITracer,IMetrics,ICache) has a pure-virtual interface and one or more concrete adapters. -
No-Op Defaults (non-production) β no-op adapters are valid in test/dev mode;
production mode rejects
createNoOp()and no-op tracing/metrics. -
Thread-Safe Runtime Replacement β
ConcernsContextsupports runtime replacement for logger/tracer/metrics/cache/secrets/feature flags/audit sink with guarded swap semantics. - Environment Detection β factory methods inspect environment variables to choose production vs. test adapters automatically.
-
Single Source of Truth β all cross-cutting concern access flows through
ConcernsContext; no direct spdlog or OTel calls in domain code.
| File | Role |
|---|---|
concerns/concerns_context.cpp |
Central DI hub: holds logger, tracer, metrics, cache, secrets, feature flags, and audit references |
concerns/spdlog_logger_adapter.h |
Production logger adapter |
concerns/context_propagation.cpp |
Distributed trace context propagation (W3C TraceContext) |
security_initialization.cpp |
OpenSSL and security library initialization at startup |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β All ThemisDB Modules β
β context->logger()->info(...) β
β context->tracer()->startSpan(...) β
β context->metrics()->incrementCounter(...) β
β context->cache()->set(...) β
ββββββββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββ
β ConcernsContext (service container) β
β β
β logger() β ILogger* β SpdlogLoggerAdapter | NoopLogger β
β tracer() β ITracer* β OtelTracerAdapter | NoopTracer β
β metrics() β IMetrics* β PrometheusAdapter | NoopMetrics β
β cache() β ICache* β RedisAdapter | LocalCacheAdapterβ
β secrets() β ISecrets* β InMemory/Env/NoOp β
β featureFlags() β IFeatureFlags* β InMemory/NoOp β
β auditLog() β IAuditLog* β NoOp/adapter β
β β
β create(config) : factory for production β
β createNoOp() : factory with all Noop adapters β
β createCustom(logger, tracer, ...) : full custom injection β
β replace*() : runtime adapter replacement β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
QueryEngine::execute(query)
β
βΌ
context->logger()->info("Executing query: {}", query.id)
β
βΌ
SpdlogLoggerAdapter β spdlog::info(...) [production]
or
NoopLogger β (nothing) [test mode]
ApiHandler::handle(request)
β
βΌ
context->tracer()->startSpan("api_request") β Span
β
βΌ
(calls query engine...)
β
βΌ
span.end() β OtelTracerAdapter β OpenTelemetry exporter β Jaeger/Zipkin
Inbound gRPC/HTTP request with W3C traceparent header
β
βΌ
context_propagation.cpp: extract trace ID, span ID, flags
β
βΌ
ConcernsContext: set active trace context for this request thread
β
βΌ
All logger/tracer calls on this thread include the trace ID automatically
| Direction | Module | Interface |
|---|---|---|
| Provides to | All modules |
ConcernsContext for logging, tracing, metrics, cache |
| Uses | spdlog library | Logging adapter |
| Uses | OpenTelemetry | Tracing adapter |
| Uses | Prometheus client | Metrics adapter |
| Initializes | OpenSSL |
security_initialization.cpp at server startup |
-
ConcernsContextis immutable aftercreate(); all reads are lock-free. - Adapters are responsible for their own thread safety (spdlog and OTel are thread-safe).
-
context_propagation.cppuses thread-local storage for the active trace context. -
security_initialization.cppmust be called once on the main thread before any TLS/crypto operations.
| Technique | Detail |
|---|---|
| No-op defaults | Logging/tracing disabled in test mode with zero overhead |
| Thread-local context | Trace context propagation uses TLS β no shared state |
| Lazy adapter init | Optional adapters (Redis cache) initialized on first use |
-
security_initialization.cppenforces fail-closed bootstrap behavior in production mode (invalid provider/JWT configuration raisesstd::runtime_error). -
ConcernsContext::create(config)rejects invalid adapter/config combinations and enforces production constraints for tracing/metrics (no noop adapters in production). - Runtime adapter replacement APIs reject
nullptrand fail fast viastd::invalid_argument.
| Parameter | Default | Description |
|---|---|---|
core.log_level |
"info" | spdlog log level (trace/debug/info/warn/error/critical) |
core.tracing.enabled |
false | Enable OpenTelemetry tracing |
core.tracing.exporter |
"otlp" | OTel exporter (otlp/jaeger/zipkin) |
core.tracing.endpoint |
"" | OTel collector endpoint |
core.metrics.enabled |
true | Enable Prometheus metrics |
| Error Type | Strategy |
|---|---|
| Invalid runtime configuration | Fail closed during create(config) with std::runtime_error
|
| Production policy violation (noop tracing/metrics) | Fail closed with std::runtime_error
|
Runtime replace* with null adapter |
Reject immediately with std::invalid_argument
|
- Redis cache adapter (
RedisCache) is implemented ininclude/core/concerns/redis_cache.h/src/core/concerns/redis_cache.cppwith consistent hashing, TTL, and pub/sub invalidation. - OTel baggage propagation is partial; full W3C Baggage support is planned.
- Log sampling (high-frequency event suppression) is not yet implemented.
- Plugin-based adapter loading without recompilation is implemented (
AdapterRegistry::loadFromPlugin,plugin_api.h) with SHA-256 signature enforcement available viaAdapterTrustPolicy::kRequireSignature; remaining work focuses on advanced trust-policy controls and key-management lifecycle hardening.
-
src/core/README.mdβ module overview -
docs/architecture/CONCERNS_ARCHITECTURE_DIAGRAM.mdβ visual architecture diagram -
docs/architecture/CONCERNS_IMPLEMENTATION_SUMMARY.mdβ implementation history -
docs/architecture/MIGRATION_GUIDE_CONCERNS.mdβ migration guide -
ARCHITECTURE.md(root) β full system architecture
| Module | Interface / File | Purpose |
|---|---|---|
| utils | include/utils/ |
spdlog adapter wires to utils logging infra; thread-pool and tracing helpers consumed for no-op and production adapters |
| Module | Via | Notes |
|---|---|---|
| server | include/core/concerns/concerns_context.h |
Server obtains logger, tracer, metrics, and cache from ConcernsContext at startup |
| llm | include/core/ |
LLM module uses ConcernsContext for cross-cutting concern injection |
| ALL modules | include/core/concerns/ |
Every production module logs, traces, and records metrics through core DI interfaces |
Files: src/core/concerns/concerns_context.cpp
Contract: ConcernsContext::create(config) is the canonical factory for all cross-cutting adapters; no module may call spdlog or OTel APIs directly in domain code. Runtime replacement via replace*() APIs is serialised under internal mutex; nullptr replacements are rejected.
Thread Safety: ConcernsContext supports concurrent reads of registered adapters; replace*() calls acquire an exclusive write lock. Callbacks on replaced adapters must tolerate concurrent in-flight reads during the handoff window.
Files: src/core/security_initialization.cpp β server startup
Contract: Must be called once before any TLS/JWT operation; fails closed (std::runtime_error) on invalid provider configuration.
Thread Safety: Single-call initialisation; must complete before any concurrent thread accesses TLS state.
ThemisDB 1.9.0-beta Β· Home Β· Module-Index Β· GitHub Β· Issues
ThemisDB 1.9.0-beta Β· Home Β· Wiki-Index Β· Module-Index Β· FAQ Β· Quick-Reference Β· GitHub Β· Issues Β· Discussions Β· License
- Home
- Hero Articles
- All Wiki Pages
- FAQ
- Edition Comparison
- Repository README
- Changelog
- Roadmap
- Versioning
- Integration Mapping
- Overview
- Readme
- Appendix D Feature Status
- Appendix E Incident Runbooks
- Appendix F AQL Cheatsheet
- Appendix G Configuration
- Appendix H Glossary
- Appendix I Troubleshooting
- Appendix Literatur
- Chapter 00 Genesis
- Chapter 01 Introduction
- Chapter 02 Architecture
- Chapter 03 Multimodel
- Chapter 04 Installation
- Chapter 05 Relational
- Chapter 06 Graph
- Chapter 07 Document
- Chapter 08 Storage Layer
- Chapter 08 Vector
- Chapter 09 Timeseries
- Chapter 10 Enterprise
- Chapter 11 Realtime
- Chapter 12 Computervision
- Chapter 13 Fulltext
- Chapter 14 Geospatial
- Chapter 15 Analytics
- Chapter 16 Ml
- Chapter 16 Sharding
- Chapter 17 LLM Integration
- Chapter 17 Scaling
- Chapter 18 HA
- Chapter 18 Ml
- Chapter 19 Monitoring
- Chapter 19 Monitoring Observability
- Chapter 20 Backup
- Chapter 20 Performance
- Chapter 21 Auth
- Chapter 21 Performance
- Chapter 22 Clients
- Chapter 22 Encryption
- Chapter 23 Testing Qa
- Chapter 24 Ai Ethics
- Chapter 25 Devops Infrastructure
- Chapter 26 Migration Legacy
- Chapter 27 Troubleshooting
- Chapter 28 AQL Reference
- Chapter 29 Analytics Process Mining
- Chapter 30 Deployment Operations
- Chapter 31 API Protocols
- Chapter 32 API Design Rest Principles
- Chapter 32 AQL Oop Implementation
- Chapter 33 Best Practices
- Chapter 34 Query Optimization
- Chapter 35 Data Modeling Patterns
- Chapter 36 Security Hardening
- Chapter 37 Ecosystem Integration
- Chapter 38 Observability Sre
- Chapter 39 Performance Tuning Cookbook
- Chapter 40 Data Governance Compliance
- Chapter 41 Hands On Labs
- Chapter 42 Docs Assistant Usage
- Chapter MVCC Hlc
- Cover
- Cover Book
- Index
- Preface
- Test Links Example
- Batch Operations
- Best Practices
- CRUD Tutorial
- Custom Document Ingestion
- Getting Started Tutorial
- Interactive Examples
- Schema Design
- Video Tutorials
- AQL Reference
- AQL Examples
- AQL Overview
- AQL Feature Roadmap
- AQL Geospatial Guide
- AQL LLM Migration Guide
- AQL API
- AQL Grammar (EBNF)
- AQL Root Overview
- AQL Examples (root)
- API Reference
- API Module README
- OpenAPI Overview
- Client SDK Overview
- SDK Overview
- Operations
- Operations Overview
- Operations Runbook
- Operations Handbook
- ThemisCtl Admin Guide
- Pipeline E2E SOPs
- Docker Overview
- Docker Hub README
- Helm Overview
- Packaging Overview
- Operator Overview
- Security Policy
- Production Hardening Checklist
- Security Hardening Guide
- Encryption Key Management
- Access Control Framework
- Zero Trust Policy
- API Authentication & Authorization
- HSM Production Setup
- PKCS11 Integration
- DSGVO / SOC2 Checklist
- Access Model Runbooks
- Access Model Dashboard
- Maturity Automation Runbook
- Access Review Automation
- Access Model Dashboard
- Access Model Runbooks
- Rights Revocation
- Dr Checklists
- Dr Testing
- Incident Response Playbook
- Incident Response Testing
- GPU Oom Recovery
- Grammar Debugging
- Metrics Scrape Troubleshooting
- Model Swap Procedure
- Quota Tuning
- Subagent Deployment
- Logging Configuration
- Content Model
- Crypto & Keys
- Feature Flags Reference
- Modular Architecture Roadmap
- Modularization Guide
- Module Architecture Index
- PostgreSQL Wire Protocol
- Query Scheduling
- Raft Consensus Design
- Resource Pooling
- Source Directory Guide
- Unified Access Model
- E1 001 Layered Retrieval Design
- E1 002 Ann Abstraction Strategy
- E1 003 Tensor Summary Types
- E1 004 Lora Package Distinction
- E1 005 Model Switch Compatibility
- E1 006 Federated Tensor Summaries
- E2 001 Evaluation Framework Design
- E2 002 Hardware Profile Strategy
- E2 003 Query Planner Routing Model
- E2 004 Approximation Governance Rules
- E2 005 Cross Layer Fallback Confidence Policy
- E3 001 Distributed Tensor Design
- E3 002 Manifest Coordination Strategy
- E3 003 Recovery And Erasure Choice
- E3 004 Tensor Fabric Infrastructure
- Contributing
- Contributing (root)
- Code of Conduct
- Support
- Maintainers
- CTest Guide
- Build Quick Reference
- Developer Wiki Index
- Build / Test / CI
- Module Index
- Branching Strategy
- Release Strategy
- CI Policy Gates Wave C
- Disabled Stub Policy
- Docs PR Policy
- GA Promotion Sign Off
- Github Milestones Setup
- Governance Policies Phase1
- GPU Self Hosted Runner Requirements
- Hardening Phase 1 2 Summary 2026 09 23
- Maturity Claim Verification Checklist
- Maturity Evidence Registry
- Merge Gate Bot Config
- Merge Gate Status Live
- Phase 1 Closure Report
- Phase 1 Infrastructure Deployment
- Phase 1 Infrastructure Deployment Complete
- Phase 3 Baseline Capture
- Phase 3 Refinement Spec
- Phase 4 Sign Off And Closure
- Phase Closure Policy
- Phase Dependency Graph
- Phase3 Enforcement Runbook
- Plugin Submodule Rollback
- PR Version Targeting
- PR Version Targeting Backfill
- Production Ready 2026 Delivery Plan
- Publish Workflow Audit 2026 09 23
- Query Module Status
- Readme
- Release Governance
- Release Promotion Gate Policy
- Release Validation Checklist
- Root Hygiene Policy
- SBOM Approved Versions
- Security Compliance Audit Report 2026 08 10
- Security Module 5671 Evidence Summary
- Sharding P6 Residual Risk Acceptance
- Sourcecode Compliance Governance
- Src Module Documentation Compliance 2026 09 20
- Updates Development Status Sign Off
- Wave C Implementation Complete
- Wave C Implementation Plan
- Wave C Ml Exit Gate Sign Off
- Wave C Policy Gate Evidence
- Wiki Publish Tracking Guide
- Blob Storage
- Cuda
- Ethics Ai
- Exporters
- Huggingface
- Image Analysis
- Importers
- RPC
- Scraper
- Themisdb Ai Watermark Detector
- User Storage Encrypted
- Chimera Architecture
- Chimera Future
- Chimera Readme
- Chimera Roadmap
- Covina Fastapi Ingestion Architecture
- Covina Fastapi Ingestion Future
- Covina Fastapi Ingestion Roadmap
- Vcc Base Architecture
- Vcc Base Future
- Vcc Base Roadmap
- Vcc Clara Ingestion Architecture
- Vcc Clara Ingestion Future
- Vcc Clara Ingestion Roadmap
- Vcc Veritas Architecture
- Vcc Veritas Future
- Vcc Veritas Roadmap
- 01 Hello World
- 02 Todo App
- 03 Contact Manager
- 04 Inventory System
- 05 Time Series Monitor
- 06 Graph Social Network
- 07 Vector Search Documents
- 08 Dms Erp System
- 09 Iot Sensor Network
- 10 Drone Image Analysis
- 11 Blog Wiki
- 12 Expense Tracker
- 13 Recipe Manager
- 14 Ecommerce Catalog
- 15 Event Management
- 16 Kanban Board
- 17 Crm
- 18 Realtime Chat
- 19 Recommendation Engine
- 20 Smart Home
- 21 Coding Platform
- 22 AQL Diagram Tool
- 23 Traveling Salesman
- 24 Moral Philosophy Debates
- API Versioning
- Distributed Sharding
- Feedback Plugins
- Geo
- Gnn
- Image Analysis
- Legal Lora Training
- LLM
- Lora Sync
- Migration
- Nlp
- Performance
- Railway
- Replication
- Rope Visualization
- Sample Product Config
- Security
- Client SDK Overview
- Quickstart
- Sdk Enhancements
- Sdk Implementation Summary
- Test Suite Readme
- Go
- Java
- Javascript
- Php
- Python
- Ruby
- Rust
- Typescript
- 01 Grundlegende Operationen
- 02 AQL Queries
- 03 Graph Daten
- 04 Multimodell Anwendung
- 01 Quickstart Guide
- 02 AQL Referenz Kurzuebersicht
- 03 Datenmodellierung Guide
- 04 Uebungsaufgaben
- 05 Best Practices Guide
- Training Documents
- Training Overview
- 01 Einfuehrung Und Uebersicht
- 02 Datenmodelle Und Architektur
- 03 AQL Abfragesprache
- 04 Installation Und Setup
- 05 Anwendungsbeispiele
- Training Presentations
- Dependencies Readme
- Processmonitor Readme
- Themis.admintools.shared Readme
- Themis.aqlquerybuilder Readme
- Themis.aqlquerybuilder Roadmap
- Themis.auditlogviewer Readme
- Themis.auditlogviewer Roadmap
- Themis.classificationdashboard Readme
- Themis.classificationdashboard Roadmap
- Themis.compliancereports Readme
- Themis.compliancereports Roadmap
- Themis.gisviewer.controlpanel Readme
- Themis.gisviewer.controlpanel Roadmap
- Themis.impactanalysisviewer Readme
- Themis.impactanalysisviewer Roadmap
- Themis.ingestiontool Readme
- Themis.ingestiontool Roadmap
- Themis.keyrotationdashboard Readme
- Themis.keyrotationdashboard Roadmap
- Themis.piimanager Readme
- Themis.piimanager Roadmap
- Themis.retentionmanager Readme
- Themis.retentionmanager Roadmap
- Themis.sagaverifier Readme
- Themis.sagaverifier Roadmap
- Themis.usbadmintool Readme
- Themis.usbadmintool Roadmap
- Architecture Generator Readme
- CI Readme
- CI Roadmap
- Compiler Diagnostics Readme
- Compiler Diagnostics Roadmap
- Completion Readme
- Copilot Ollama Router Readme
- Copilot Ollama Router Roadmap
- Gnn Readme
- Gnn Roadmap
- Rope Visualizer Readme
- Rope Visualizer Roadmap
- Tco Calculator Readme
- Tco Calculator Roadmap
- Tests Readme
- Tests Roadmap
- Themis Config Wx Readme
- Themis Docs Builder Readme
- Wikipedia Ingestion Readme
- Ai Metadata And Provenance
- Build / Test / CI
- Governance And Roadmap
- Developer Wiki Index
- Module Direct Doxygen Check
- Module Doxygen Baseline Summary
- Module Doxygen Batch
- Module Doxygen Coverage Summary
- Module Doxygen Smoke Summary
- Modules And Apis
- Retrieval Direct Doxygen Check
- Soll Ist Gap Summary
- Wiki Delta Report