Skip to content

Commit 02272a3

Browse files
fix: poison lock, use parking_lot
parking_lot in - Stream metadata - Stream writer - Streams struct
1 parent 138fea3 commit 02272a3

8 files changed

Lines changed: 53 additions & 118 deletions

File tree

src/event/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ use tracing::{info_span, instrument};
2828

2929
use self::error::EventError;
3030
use crate::{
31-
LOCK_EXPECT,
3231
handlers::TelemetryType,
3332
metadata::update_stats,
3433
metrics::{increment_events_ingested_by_date, increment_events_ingested_size_by_date},
@@ -157,7 +156,7 @@ pub fn commit_schema(
157156
tenant_id: &Option<String>,
158157
) -> Result<(), StagingError> {
159158
let _span = info_span!("commit_schema", stream_name).entered();
160-
let mut stream_metadata = PARSEABLE.streams.write().expect("lock poisoned");
159+
let mut stream_metadata = PARSEABLE.streams.write();
161160
let tenant_id = tenant_id.as_deref().unwrap_or(DEFAULT_TENANT);
162161
let map = &mut stream_metadata
163162
.get_mut(tenant_id)
@@ -166,7 +165,6 @@ pub fn commit_schema(
166165
.ok_or_else(|| StreamNotFound(stream_name.to_string()))?
167166
.metadata
168167
.write()
169-
.expect(LOCK_EXPECT)
170168
.schema;
171169
let current_schema = Schema::new(map.values().cloned().collect::<Fields>());
172170
let schema = Schema::try_merge(vec![current_schema, schema.as_ref().clone()])?;

src/handlers/http/logstream.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use crate::utils::get_tenant_id_from_request;
3535
use crate::utils::json::flatten::{
3636
self, convert_to_array, generic_flattening, has_more_than_max_allowed_levels,
3737
};
38-
use crate::{LOCK_EXPECT, stats, validator};
38+
use crate::{stats, validator};
3939

4040
use actix_web::http::StatusCode;
4141
use actix_web::web::{Json, Path};
@@ -397,15 +397,14 @@ pub async fn get_stream_info(
397397
};
398398

399399
let tenant_id = tenant_id.as_deref().unwrap_or(DEFAULT_TENANT);
400-
let hash_map = PARSEABLE.streams.read().unwrap();
400+
let hash_map = PARSEABLE.streams.read();
401401
let stream_meta = hash_map
402402
.get(tenant_id)
403403
.ok_or_else(|| TenantNotFound(tenant_id.to_owned()))?
404404
.get(&stream_name)
405405
.ok_or_else(|| StreamNotFound(stream_name.clone()))?
406406
.metadata
407-
.read()
408-
.expect(LOCK_EXPECT);
407+
.read();
409408

410409
let stream_info =
411410
StreamInfo::from_metadata(&stream_meta, stream_first_event_at, stream_latest_event_at);

src/handlers/http/modal/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -636,7 +636,7 @@ pub async fn initialize_hot_tier_metadata_on_startup(
636636
) -> anyhow::Result<()> {
637637
// Collect hot tier configurations from streams before doing async operations
638638
let hot_tier_configs: Vec<(String, Option<String>, StreamHotTier)> = {
639-
let tenants_guard = PARSEABLE.streams.read().unwrap();
639+
let tenants_guard = PARSEABLE.streams.read();
640640
tenants_guard
641641
.iter()
642642
.flat_map(|(tenant_id, streams)| {

src/parseable/mod.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,6 @@ impl Parseable {
280280
let tenant_id = tenant_id.as_deref().unwrap_or(DEFAULT_TENANT);
281281
self.streams
282282
.read()
283-
.unwrap()
284283
.get(tenant_id)
285284
.ok_or_else(|| StreamNotFound(format!("{stream_name} with tenant {tenant_id}")))
286285
.map(|v| v.get(stream_name))?
@@ -1219,9 +1218,7 @@ impl Parseable {
12191218
write_user_groups().remove(tenant_id);
12201219

12211220
// delete streams
1222-
if let Ok(mut streams) = PARSEABLE.streams.write() {
1223-
streams.remove(tenant_id);
1224-
}
1221+
PARSEABLE.streams.write().remove(tenant_id);
12251222

12261223
// delete from in-mem
12271224
if let Ok(mut tenants) = self.tenants.write() {

src/parseable/staging/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
*
1818
*/
1919

20-
use std::sync::PoisonError;
21-
2220
use crate::{parseable::StreamNotFound, tenants::TenantNotFound};
2321

2422
pub mod reader;
@@ -38,6 +36,4 @@ pub enum StagingError {
3836
StreamNotFound(#[from] StreamNotFound),
3937
#[error("{0}")]
4038
TenantNotFound(#[from] TenantNotFound),
41-
#[error("{0}")]
42-
PoisonError(#[from] PoisonError<String>),
4339
}

0 commit comments

Comments
 (0)