@@ -108,7 +108,7 @@ impl<N, C: GetElapsed, J> Bridge<N, C, J> {
108108impl < N : PublishClient + FlushClient + Clone + Send + ' static , C : GetElapsed , J > Bridge < N , C , J > {
109109 pub ( crate ) fn schedule_session_ready ( & self , session_id : SessionId ) {
110110 let nats = self . nats . clone ( ) ;
111- let prefix = self . config . acp_prefix ( ) . to_string ( ) ;
111+ let prefix = self . config . acp_prefix_ref ( ) . clone ( ) ;
112112 let metrics = self . metrics . clone ( ) ;
113113 let handle = tokio:: spawn ( async move {
114114 publish_session_ready ( & nats, & prefix, & session_id, & metrics) . await ;
@@ -119,13 +119,21 @@ impl<N: PublishClient + FlushClient + Clone + Send + 'static, C: GetElapsed, J>
119119
120120async fn publish_session_ready < N : PublishClient + FlushClient > (
121121 nats : & N ,
122- prefix : & str ,
122+ prefix : & crate :: acp_prefix :: AcpPrefix ,
123123 session_id : & SessionId ,
124124 metrics : & Metrics ,
125125) {
126126 tokio:: time:: sleep ( SESSION_READY_DELAY ) . await ;
127127
128- let subject = session:: agent:: ext_ready ( prefix, & session_id. to_string ( ) ) ;
128+ let acp_session_id = match crate :: session_id:: AcpSessionId :: new ( session_id. to_string ( ) ) {
129+ Ok ( id) => id,
130+ Err ( e) => {
131+ warn ! ( session_id = %session_id, error = %e, "Invalid session ID from backend, skipping session.ready" ) ;
132+ metrics. record_error ( "session_ready" , "invalid_session_id" ) ;
133+ return ;
134+ }
135+ } ;
136+ let subject = session:: agent:: ExtReadySubject :: new ( prefix, & acp_session_id) ;
129137 info ! ( session_id = %session_id, subject = %subject, "Publishing session.ready" ) ;
130138
131139 let message = ExtSessionReady :: new ( session_id. clone ( ) ) ;
@@ -157,7 +165,7 @@ where
157165{
158166 pub ( crate ) async fn session_request < Req , Res > (
159167 & self ,
160- subject : & str ,
168+ subject : & impl crate :: nats :: markers :: SessionCommand ,
161169 args : & Req ,
162170 session_id : & str ,
163171 ) -> Result < Res >
@@ -167,12 +175,13 @@ where
167175 {
168176 use crate :: error:: map_nats_error;
169177
178+ let subject_str = subject. to_string ( ) ;
170179 match self . js ( ) {
171180 Some ( js) => {
172181 let req_id = uuid:: Uuid :: new_v4 ( ) . to_string ( ) ;
173182 js_request:: js_request :: < J , _ , Res , _ > (
174183 js,
175- subject ,
184+ & subject_str ,
176185 args,
177186 & trogon_std:: StdJsonSerialize ,
178187 self . config . acp_prefix ( ) ,
@@ -182,9 +191,9 @@ where
182191 )
183192 . await
184193 }
185- None => nats :: request_with_timeout :: < N , Req , Res > (
194+ None => trogon_nats :: request_with_timeout :: < N , Req , Res > (
186195 self . nats ( ) ,
187- subject ,
196+ & subject_str ,
188197 args,
189198 self . config . operation_timeout ,
190199 )
0 commit comments