Skip to content

Commit ddcb445

Browse files
authored
chore: remove dashmap from project (#10407)
1 parent 8437268 commit ddcb445

4 files changed

Lines changed: 14 additions & 10 deletions

File tree

Cargo.lock

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ camino = "1.2.2"
111111
cfg-if = "1.0.4"
112112
countme = "3.0.1"
113113
crossbeam = "0.8.4"
114-
dashmap = "6.2.1"
115114
directories = "6.0.0"
116115
either = "1.15.0"
117116
enumflags2 = "0.7.12"

crates/biome_cli/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ biome_text_edit = { workspace = true }
5555
bpaf = { workspace = true, features = ["bright-color"] }
5656
camino = { workspace = true }
5757
crossbeam = { workspace = true }
58-
dashmap = { workspace = true }
5958
papaya = { workspace = true }
6059
path-absolutize = { workspace = true }
6160
quick-junit = "0.6.0"

crates/biome_cli/src/service/mod.rs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use std::{
1111
ops::Deref,
1212
panic::RefUnwindSafe,
1313
str::{FromStr, from_utf8},
14-
sync::Arc,
14+
sync::{Arc, Mutex},
1515
time::Duration,
1616
};
1717

@@ -20,7 +20,7 @@ use biome_service::{
2020
TransportError,
2121
workspace::{TransportRequest, WorkspaceTransport},
2222
};
23-
use dashmap::DashMap;
23+
use papaya::HashMap;
2424
use serde::{Deserialize, Serialize, de::DeserializeOwned};
2525
use serde_json::{
2626
Value, from_slice, from_str, to_vec,
@@ -65,6 +65,7 @@ pub fn open_transport(runtime: Runtime) -> io::Result<Option<impl WorkspaceTrans
6565
}
6666

6767
type JsonRpcResult = Result<Box<RawValue>, TransportError>;
68+
type PendingChannel = Mutex<Option<oneshot::Sender<JsonRpcResult>>>;
6869

6970
/// Implementation of [WorkspaceTransport] for types implementing [AsyncRead]
7071
/// and [AsyncWrite]
@@ -110,11 +111,11 @@ pub struct SocketTransport {
110111
/// automatically when the handle is dropped
111112
#[derive(Clone, Default)]
112113
struct PendingRequests {
113-
inner: Arc<DashMap<u64, oneshot::Sender<JsonRpcResult>>>,
114+
inner: Arc<HashMap<u64, PendingChannel>>,
114115
}
115116

116117
impl Deref for PendingRequests {
117-
type Target = DashMap<u64, oneshot::Sender<JsonRpcResult>>;
118+
type Target = HashMap<u64, PendingChannel>;
118119

119120
fn deref(&self) -> &Self::Target {
120121
self.inner.as_ref()
@@ -131,7 +132,7 @@ impl Deref for PendingRequests {
131132
/// are cancelled immediately instead of timing out.
132133
impl Drop for PendingRequests {
133134
fn drop(&mut self) {
134-
self.inner.clear();
135+
self.inner.pin().clear();
135136
}
136137
}
137138

@@ -192,7 +193,9 @@ impl WorkspaceTransport for SocketTransport {
192193
{
193194
let (send, recv) = oneshot::channel();
194195

195-
self.pending_requests.insert(request.id, send);
196+
self.pending_requests
197+
.pin()
198+
.insert(request.id, Mutex::new(Some(send)));
196199

197200
let is_shutdown = request.method == "biome/shutdown";
198201

@@ -273,8 +276,12 @@ where
273276
break;
274277
}
275278
};
279+
let channel = pending_requests
280+
.pin()
281+
.remove(&response.id)
282+
.and_then(|ch| ch.lock().ok()?.take());
276283

277-
if let Some((_, channel)) = pending_requests.remove(&response.id) {
284+
if let Some(channel) = channel {
278285
let response = match (response.result, response.error) {
279286
(Some(result), None) => Ok(result),
280287
(None, Some(err)) => Err(TransportError::RPCError(err.message)),

0 commit comments

Comments
 (0)