MCPcopy Create free account
hub / github.com/dtormoen/tsk-tsk / get_or_create_lock

Method get_or_create_lock

src/docker/proxy_manager.rs:80–98  ·  view source on GitHub ↗

Get or create an in-process lock for a proxy fingerprint.

(&self, fingerprint: &str)

Source from the content-addressed store, hash-verified

78
79 /// Get or create an in-process lock for a proxy fingerprint.
80 async fn get_or_create_lock(&self, fingerprint: &str) -> Arc<Mutex<()>> {
81 {
82 let locks = self.fingerprint_locks.read().await;
83 if let Some(lock) = locks.get(fingerprint) {
84 return Arc::clone(lock);
85 }
86 }
87
88 let mut locks = self.fingerprint_locks.write().await;
89
90 // Double-check: another task may have inserted while we waited for the write lock
91 if let Some(lock) = locks.get(fingerprint) {
92 return Arc::clone(lock);
93 }
94
95 let new_lock = Arc::new(Mutex::new(()));
96 locks.insert(fingerprint.to_string(), Arc::clone(&new_lock));
97 new_lock
98 }
99
100 fn lock_path(&self, fingerprint: &str) -> PathBuf {
101 self.runtime_dir.join(format!("proxy-{fingerprint}.lock"))

Callers 1

with_lockMethod · 0.45

Calls

no outgoing calls

Tested by

no test coverage detected