diff --git a/src/main/java/lion/storageNode.java b/src/main/java/lion/storageNode.java index 5907ddb..37f7aaf 100644 --- a/src/main/java/lion/storageNode.java +++ b/src/main/java/lion/storageNode.java @@ -171,7 +171,16 @@ public class storageNode { } case AbstractMessage.DELETE_GALLERY_MESSAGE -> { DeleteGalleryMessage deleteGalleryMessage = (DeleteGalleryMessage) abstractMessage; - byte result = DeleteService.deleteAll(storagePath + deleteGalleryMessage.getGalleryName()); + String galleryName = deleteGalleryMessage.getGalleryName(); + lock.lock(); + try { + // 删除任务时也要从待下载队列移除,避免继续向主站上报已经删除的任务状态。 + storageNode.this.queue.entrySet().removeIf(entry -> galleryName.equals(entry.getValue().getName())); + queue.entrySet().removeIf(entry -> galleryName.equals(entry.getValue().getName())); + } finally { + lock.unlock(); + } + byte result = DeleteService.deleteAll(storagePath + galleryName); ResponseMessage responseMessage = new ResponseMessage(deleteGalleryMessage.messageId, result); ctx.writeAndFlush(responseMessage); }