Skip to content

Commit 777d31e

Browse files
authored
server: Remove unwraps in redis queue module (#1319)
1 parent f096f73 commit 777d31e

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

server/svix-server/src/queue/redis.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,12 @@ async fn new_pair_inner(
234234
}
235235
}
236236

237-
fn task_from_redis_key(key: &str) -> Arc<QueueTask> {
237+
fn task_from_redis_key(key: &str) -> serde_json::Result<Arc<QueueTask>> {
238238
// Get the first delimiter -> it has to have the |
239-
let pos = key.find('|').unwrap();
240-
serde_json::from_str(&key[pos + 1..]).unwrap()
239+
let pos = key
240+
.find('|')
241+
.ok_or_else(|| serde::de::Error::custom("key must contain '|'"))?;
242+
serde_json::from_str(&key[pos + 1..])
241243
}
242244

243245
async fn migrate_v2_to_v3_queues(conn: &mut PooledConnection<'_>) -> Result<()> {
@@ -268,7 +270,14 @@ async fn migrate_list_to_stream(
268270

269271
let mut pipe = redis::pipe();
270272
for key in legacy_keys {
271-
let task = task_from_redis_key(&key);
273+
let task = match task_from_redis_key(&key) {
274+
Ok(t) => t,
275+
#[allow(trivial_casts)]
276+
Err(e) => {
277+
tracing::error!(error = &e as &dyn std::error::Error, "Invalid legacy key");
278+
continue;
279+
}
280+
};
272281
let _ = pipe.xadd(
273282
queue,
274283
GENERATE_STREAM_ID,

0 commit comments

Comments
 (0)