@@ -22,6 +22,7 @@ use universaldb::utils::IsolationLevel::*;
22
22
use vbare:: OwnedVersionedData ;
23
23
24
24
const X_RIVET_TOKEN : HeaderName = HeaderName :: from_static ( "x-rivet-token" ) ;
25
+ const X_RIVETKIT_TOTAL_SLOTS : HeaderName = HeaderName :: from_static ( "x-rivetkit-total-slots" ) ;
25
26
26
27
struct OutboundConnection {
27
28
handle : JoinHandle < ( ) > ,
@@ -158,6 +159,7 @@ async fn tick(
158
159
url. clone ( ) ,
159
160
headers. clone ( ) ,
160
161
Duration :: from_secs ( * request_lifespan as u64 ) ,
162
+ * slots_per_runner,
161
163
)
162
164
} )
163
165
. take ( start_count) ;
@@ -183,14 +185,23 @@ fn spawn_connection(
183
185
url : String ,
184
186
headers : HashMap < String , String > ,
185
187
request_lifespan : Duration ,
188
+ slots_per_runner : u32 ,
186
189
) -> OutboundConnection {
187
190
let ( shutdown_tx, shutdown_rx) = oneshot:: channel :: < ( ) > ( ) ;
188
191
let draining = Arc :: new ( AtomicBool :: new ( false ) ) ;
189
192
190
193
let draining2 = draining. clone ( ) ;
191
194
let handle = tokio:: spawn ( async move {
192
- if let Err ( err) =
193
- outbound_handler ( & ctx, url, headers, request_lifespan, shutdown_rx, draining2) . await
195
+ if let Err ( err) = outbound_handler (
196
+ & ctx,
197
+ url,
198
+ headers,
199
+ request_lifespan,
200
+ slots_per_runner,
201
+ shutdown_rx,
202
+ draining2,
203
+ )
204
+ . await
194
205
{
195
206
tracing:: error!( ?err, "outbound req failed" ) ;
196
207
@@ -217,6 +228,7 @@ async fn outbound_handler(
217
228
url : String ,
218
229
headers : HashMap < String , String > ,
219
230
request_lifespan : Duration ,
231
+ slots_per_runner : u32 ,
220
232
shutdown_rx : oneshot:: Receiver < ( ) > ,
221
233
draining : Arc < AtomicBool > ,
222
234
) -> Result < ( ) > {
@@ -232,7 +244,10 @@ async fn outbound_handler(
232
244
} )
233
245
. collect ( ) ;
234
246
235
- let mut req = client. get ( url) . headers ( headers) ;
247
+ let mut req = client
248
+ . get ( url)
249
+ . headers ( headers)
250
+ . header ( X_RIVETKIT_TOTAL_SLOTS , slots_per_runner. to_string ( ) ) ;
236
251
237
252
// Add admin token if configured
238
253
if let Some ( auth) = & ctx. config ( ) . auth {
0 commit comments