diff --git a/services/broker_gateway_service/src/main.rs b/services/broker_gateway_service/src/main.rs index f766fb088..074ce4760 100644 --- a/services/broker_gateway_service/src/main.rs +++ b/services/broker_gateway_service/src/main.rs @@ -93,7 +93,7 @@ async fn main() -> Result<()> { match ctrader_openapi::CTraderClient::connect(ct_config).await { Ok(ct_client) => { - service.set_broker_client(ct_client); + service.set_broker_client(ct_client).await; info!("✓ cTrader broker connected"); } Err(e) => { diff --git a/services/broker_gateway_service/src/service.rs b/services/broker_gateway_service/src/service.rs index 96ac41f1d..cb73f84fb 100644 --- a/services/broker_gateway_service/src/service.rs +++ b/services/broker_gateway_service/src/service.rs @@ -41,12 +41,10 @@ impl BrokerGatewayService { /// Set the cTrader broker client (call after connecting). #[cfg(feature = "icmarkets")] - pub fn set_broker_client(&self, client: CTraderClient) { - // Use try_write to avoid blocking — if locked, log and skip - match self.broker_client.try_write() { - Ok(mut guard) => *guard = Some(client), - Err(_) => warn!("could not set broker client — lock contended"), - } + pub async fn set_broker_client(&self, client: CTraderClient) { + let mut guard = self.broker_client.write().await; + *guard = Some(client); + info!("cTrader broker client set successfully"); } /// Generate client order ID (UUID v4)