yasithdev opened a new pull request, #593:
URL: https://github.com/apache/airavata/pull/593

   ## Summary
   
   Consolidates Airavata from 4+ separate Thrift servers (API, Registry, 
Sharing, CredentialStore, Profile, Orchestrator) into a single JVM with all 
services multiplexed on one Thrift port (8930). All databases unified to a 
single `airavata` database.
   
   **93 files changed, +1161/-6340 lines (net -5179)**
   
   ### What changed
   
   **Single entry point — `AiravataServer`**
   - All 9 Thrift services registered on `TMultiplexedProcessor` on port 8930
   - Background services (DBEventManager, MonitoringServer, cluster monitoring, 
data interpreter, process rescheduler) started with independent lifecycles
   - Replaces `ServerMain`, `AiravataAPIServer`, `RegistryAPIServer`, 
`SharingRegistryServer`, `CredentialStoreServer`, `OrchestratorServer`, 
`ProfileServiceServer`
   
   **AiravataServerHandler refactored**
   - 759 `ThriftClientPool` RPC references replaced with direct in-process 
handler calls
   - Eliminates inter-service network overhead entirely
   - ~790 lines of pool management boilerplate removed
   
   **Unified database config**
   - All 7 JDBC config classes now read from `airavata.jdbc.*` properties
   - Single database connection block replaces 7 per-catalog blocks
   - Added missing `CREDENTIALS` and `COMMUNITY_USER` tables to V1 baseline
   
   **Python SDK updated**
   - All 7 client functions use `TMultiplexedProtocol` with service names on 
single port
   - Removed separate host/port configs for Sharing, CredentialStore, 
ProfileService
   - `_validate_transport` handles services without `getAPIVersion`
   
   **`ThriftClientPool` supports multiplexing**
   - New constructor accepts `serviceName` for `TMultiplexedProtocol`
   - Backward compatible — existing 4-arg constructor still works
   
   **IServer interface simplified**
   - Removed unused `getVersion()`, `restart()`, `configure()`
   - Fixed `STOPING` → `STOPPING` typo
   - `MonitoringServer` now implements `IServer`
   - `DBEventManagerRunner.stop()` actually stops
   - `ComputationalResourceMonitoringService.getName()` returns real name
   
   **Module services updated**
   - agent-service, file-server, research-service, restproxy: `localhost` 
instead of `airavata.localhost`
   - file-server: uses multiplexed `ThriftClientPool` for RegistryService
   
   **DevOps & Ansible**
   - All ansible templates updated to unified `airavata.jdbc.*` and 
`AiravataServer`
   - docker-startup.sh, services_up/down.sh: single service
   - Old per-service shell scripts removed
   - `compose.yml`: Kafka advertised host fixed
   
   **Setup scripts**
   - `scripts/setup.sh`: starts docker infra, generates keystores, builds
   - `scripts/start.sh`: launches AiravataServer with correct classpath
   
   ### Verified from clean teardown
   
   | Component | Port | Status |
   |-----------|------|--------|
   | Airavata Thrift (9 services) | 8930 | Running |
   | Agent Service | 18880 | Running |
   | File Server | 8050 | Running |
   | Research Service | 18889 | Running |
   | REST Proxy | 8082 | Running |
   | Monitoring Server | 9097 | Running |
   | Python SDK | — | 7/7 connected |
   | MariaDB | 13306 | 149 tables |
   | RabbitMQ | 5672 | 5 exchanges |
   | ZooKeeper | 2181 | Connected |
   
   ### How to test
   
   ```bash
   git checkout feat/single-jvm
   ./scripts/setup.sh    # starts docker, generates keystores, builds
   ./scripts/start.sh    # launches AiravataServer on port 8930
   ```
   
   ## Test plan
   
   - [x] Full teardown and fresh launch — zero errors
   - [x] All 9 Thrift services registered and serving
   - [x] Background services start (DBEventManager, MonitoringServer)
   - [x] All Spring Boot modules start (agent, file-server, research, restproxy)
   - [x] Python SDK connects to all 7 services via TMultiplexedProtocol
   - [x] Compilation clean, packaging clean
   - [x] No stale references to old server classes, ports, or JDBC keys


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to