* refactor(metrics): Monitors owns its CompositeMeterRegistry; MetricsCollector wires registries in
Previously Monitors pulled its registry from MetricsCollector, creating an
awkward dependency from conductor-core → conductor-metrics. Now Monitors
owns the CompositeMeterRegistry directly and exposes addMeterRegistry() /
getRegistry(). MetricsCollector (contribs) becomes a thin Spring wiring
component that calls Monitors.addMeterRegistry() on startup.
- Removes conductor-core → conductor-metrics build dependency (cycle-free)
- Adds conductor-metrics → conductor-core build dependency
- Adds getGauge() / getDistributionSummary() aliases for callers using the
'get' naming convention
- Deprecates MetricsCollector.getMeterRegistry() in favour of
Monitors.getRegistry()
* Applied spotless
* test(metrics): add MonitorsTest covering registry ownership and meter APIs
Verifies addMeterRegistry(), getRegistry(), counter/timer/gauge identity
caching, getGauge/getDistributionSummary aliases, and tag isolation.
* test(metrics): add Spring integration test verifying MetricsCollector wires registries into Monitors
Boots a minimal Spring context with a SimpleMeterRegistry, confirms that
counters/timers/gauges recorded via Monitors are visible in the
Spring-wired registry after MetricsCollector initialises.
* Applied spotless
* refactor(metrics): retire conductor-metrics module, move classes to core/server
MetricsCollector moves to core alongside Monitors — they are companion classes
(Monitors owns the registry, MetricsCollector wires Spring-managed registries in).
Registry-specific configs (Logging, CloudWatch, AzureMonitor) move to server where
they belong as deployment-level concerns. No Java code imported from the old
contribs.metrics package, so this is a pure relocation with no call-site changes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* refactor(metrics): delete retired conductor-metrics module directory
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(metrics): add micrometer-registry-prometheus to server and server-lite
Without this dependency Spring Boot cannot create PrometheusMeterRegistry,
so /actuator/prometheus silently returns 404 even though
conductor.metrics-prometheus.enabled=true is set in all default configs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore: simplify metrics comment in server build files
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* fix(build): remove stale :conductor-metrics dep from scheduler-core
The scheduler module (merged from main via #1064) still referenced
:conductor-metrics, which this branch retired. Monitors is already
provided by :conductor-core.
---------
Update AbstractSpecification in both test-harness and test-util to import
WorkflowSweeper from new package location org.conductoross.conductor.core.execution
instead of deprecated com.netflix.conductor.core.reconciliation package.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Fix flaky tests: PostgresGrpcEndToEndTest and PostgresPollDataDAONoCacheTest
1. PostgresGrpcEndToEndTest - Fixed two race conditions:
- Search indexing: Replaced Thread.sleep(1000) with await().atMost(5, SECONDS)
for Elasticsearch/OpenSearch indexing (8 search operations)
- Task polling: Added awaitility retry for workflow task scheduling
Both race conditions caused "expected:<1> but was:<0>" failures
2. PostgresPollDataDAONoCacheTest - Fixed test isolation issue:
- Added @DirtiesContext(classMode = AFTER_EACH_TEST_METHOD) to force
Spring context reload between tests
- Added verification in @Before to detect if table truncation fails
- Prevents data leakage between tests in CI environments with
connection pooling
Dependencies:
- Added awaitility test dependency to test-util module
These fixes address intermittent CI failures by replacing fixed delays
with robust retry mechanisms and ensuring proper test isolation.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Trigger CI to verify flaky test fixes
* Trigger CI build #2 for validation
* Trigger CI build #3 for validation
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* Upgraded ES7 to 7.17.16, alpine to 3.19
* Update ElasticSearch to 7.17.16, some sdk tests are failing.
* Server would not run, StackOverflow - 54742540 had this handy fix.
* Use the new image in test container.
* Update Spring Boot to 3.2.1. One failing test in end to end.
* Handle the change in exceptions from Spring Framework.
* Update AWS SDK for CVE fix.
* Replace generic import with specific class.
* Removed dependencies.lock file from projects. No longer used.