From abdc524a61d856f0216f3422f3ab8e824c1b14a9 Mon Sep 17 00:00:00 2001 From: Imbris Date: Thu, 2 Jan 2020 23:23:38 -0500 Subject: [PATCH] Don't panic if a region can't be found for a deleted entity --- server/src/lib.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/server/src/lib.rs b/server/src/lib.rs index 7a7f85eeed..bc49da988f 100644 --- a/server/src/lib.rs +++ b/server/src/lib.rs @@ -32,7 +32,7 @@ use common::{ terrain::{block::Block, TerrainChunkSize, TerrainGrid}, vol::{ReadVol, RectVolSize, Vox}, }; -use log::{debug, error}; +use log::{debug, error, warn}; use metrics::ServerMetrics; use rand::Rng; use specs::{ @@ -1221,14 +1221,20 @@ impl StateExt for State { let res = self.ecs_mut().delete_entity(entity); if res.is_ok() { if let (Some(uid), Some(pos)) = (maybe_uid, maybe_pos) { - let region_key = self + if let Some(region_key) = self .ecs() .read_resource::() .find_region(entity, pos.0) - .expect("Failed to find region containing entity during entity deletion"); - self.ecs() - .write_resource::() - .record_deleted_entity(uid, region_key); + { + self.ecs() + .write_resource::() + .record_deleted_entity(uid, region_key); + } else { + // Don't panic if the entity wasn't found in a region maybe it was just created + // and then deleted before the region manager had a chance to assign it a + // region + warn!("Failed to find region containing entity during entity deletion, assuming it wasn't sent to any clients and so deletion doesn't need to be recorded for sync purposes"); + } } } res