[
https://issues.apache.org/jira/browse/AIRAVATA-3981?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18068829#comment-18068829
]
ASF subversion and git services commented on AIRAVATA-3981:
-----------------------------------------------------------
Commit f1872d30d5bc34e7e8a7998db200c9f46299b502 in airavata's branch
refs/heads/master from Yasith Jayawardana
[ https://gitbox.apache.org/repos/asf?p=airavata.git;h=f1872d30d5 ]
AIRAVATA-3981: Add integration health check — ServiceRegistry, monitoring
endpoints, Tiltfile, test suite (#596)
* feat: add ServiceRegistry and ServiceStatus for background service tracking
* feat: add /health/services and /admin/restart endpoints to MonitoringServer
* refactor: use ServiceRegistry in AiravataServer for background service
lifecycle
* feat: add Tiltfile for dev orchestration and integration testing
* feat: add integration-tests Maven module scaffold
* feat: add ThriftServiceHealthTest for all 9 multiplexed services
* feat: add Database, RabbitMQ, and Kafka integration health tests
* feat: add Keycloak and Prometheus integration health tests
* feat: add ServiceHealthEndpoint and BackgroundServiceHealth integration tests
* chore: final cleanup — gitignore docs/superpowers, fix health endpoint format
- Wrap /health/services response in {"services": {...}} per spec
- Update ServiceHealthEndpointTest and BackgroundServiceHealthTest to
unwrap the "services" key before asserting on service entries
- Add docs/superpowers/ to .gitignore and remove already-committed files
from git tracking (local copies preserved)
* style: apply spotless formatting to MonitoringServer and integration tests
* fix: ServiceRegistry uses IServer.getStatus() for health, add actuator to
Spring Boot services
- ServiceRegistry now checks IServer.getStatus() == STARTED in addition to
Thread.isAlive(), fixing false DOWN for services like PostWorkflowManager
that spawn sub-threads and let their main thread exit
- Add spring-boot-starter-actuator to all 4 Spring Boot modules with
/actuator/health endpoint exposed
- Update Tiltfile to use spring-boot:run for Spring Boot services
- All 8/8 background services + 4/4 Spring Boot services report UP
* docs: update README for thrift-server split, Tiltfile, health monitoring
- Update architecture diagram to show airavata-thrift-server + airavata-api
split
- Replace scripts/start.sh quick start with tilt up
- Add health monitoring endpoints table (/health/services, /admin/restart)
- Add integration tests section
- Update Spring Boot services table with ports and gRPC
- Replace ide-integration IDE setup with Tilt-based workflow
- Update workspace CLAUDE.md to include airavata project
> Add integration health check: ServiceRegistry, monitoring endpoints,
> Tiltfile, and test suite
> ---------------------------------------------------------------------------------------------
>
> Key: AIRAVATA-3981
> URL: https://issues.apache.org/jira/browse/AIRAVATA-3981
> Project: Airavata
> Issue Type: Improvement
> Reporter: Yasith Jayawardana
> Priority: Major
>
> h2. Goal
> Automated end-to-end verification that the full Airavata stack starts cleanly
> after the thrift-server extraction. Single Tiltfile orchestrates infra,
> build, server startup, and health checks — replacing shell scripts, IDE
> launchers, and custom deployment tooling. Minimal bloat.
> h2. Components
> h3. 1. Monitoring Server Enhancement (airavata-api)
> Extend MonitoringServer (HTTP on port 9097) with two new endpoints alongside
> existing Prometheus /metrics. No auth (internal admin port).
> *GET /health/services* — Returns JSON with status of the thrift server and
> all background services. Status values: UP, DOWN, DISABLED. Each entry
> includes status, uptime_ms, last_error.
> *POST /admin/restart/\{serviceName\}* — Restarts a background service by
> label. 200 OK (restarted), 404 (unknown), 500 (failed).
> Implementation: ServiceRegistry class tracks background services.
> AiravataServer registers services with the registry instead of raw lists.
> MonitoringServer queries the registry for /health/services and triggers
> restarts via /admin/restart.
> h3. 2. Tiltfile (repo root)
> Single orchestration file for dev setup AND integration verification.
> Replaces ide-integration module.
> * docker_compose for infra (MariaDB, RabbitMQ, ZooKeeper, Kafka, Keycloak)
> * local_resource for build (mvn package)
> * local_resource for airavata-server (classpath mode, readiness probe on
> /health/services)
> * local_resource for integration-tests (manual trigger)
> What goes away: modules/ide-integration/,
> dev-tools/deployment-scripts/docker-startup.sh
> h3. 3. integration-tests/ Maven Module
> 8 JUnit 5 test classes:
> * ThriftServiceHealthTest — multiplexed thrift client calls getAPIVersion()
> on all 9 services
> * DatabaseHealthTest — JDBC to MariaDB, verify key tables
> * RabbitMQHealthTest — AMQP connection, verify exchanges
> * KafkaHealthTest — Kafka admin client, verify broker reachable
> * KeycloakHealthTest — realm endpoint, obtain token
> * PrometheusHealthTest — GET /metrics
> * ServiceHealthEndpointTest — GET /health/services, all services UP
> * BackgroundServiceHealthTest — all expected background services present
--
This message was sent by Atlassian Jira
(v8.20.10#820010)