MCPcopy Create free account
hub / github.com/Botloader/botloader / add_worker_to_pool

Method add_worker_to_pool

components/scheduler/src/vmworkerpool.rs:203–232  ·  view source on GitHub ↗
(&self, worker: WorkerHandle)

Source from the content-addressed store, hash-verified

201 }
202
203 fn add_worker_to_pool(&self, worker: WorkerHandle) {
204 let mut w = self.inner.lock().unwrap();
205
206 // potentially hand over to next queued request
207 let mut i = MAX_PREMIUM_SLOT_TIER;
208 loop {
209 let queue = &mut w.req_queues[i];
210 if let Some(req) = queue.pop_front() {
211 let claim = ClaimedWorker::new_claim(req.guild_id, &worker);
212
213 if req.tx.send(worker).is_err() {
214 panic!("worker request dropped")
215 }
216
217 w.track_claimed_worker(claim);
218
219 return;
220 }
221
222 if i == worker.priority_index {
223 break;
224 }
225
226 i -= 1;
227 }
228
229 // no pending worker requests
230 metrics::gauge!("bl.scheduler.workerpool_available_workers", "priority_index" => worker.priority_index.to_string()).increment(1.0);
231 w.pools[worker.priority_index].push(worker);
232 }
233
234 fn add_pending_worker(&self, worker: PendingWorkerHandle) {
235 let mut w = self.inner.lock().unwrap();

Callers 2

return_workerMethod · 0.80
worker_connectedMethod · 0.80

Calls 4

lockMethod · 0.80
track_claimed_workerMethod · 0.80
incrementMethod · 0.80
sendMethod · 0.45

Tested by

no test coverage detected