[ 
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)

Reply via email to