From 5d84ebd4eee8aca38cafbade91809b06101df084 Mon Sep 17 00:00:00 2001 From: chuzhongzai Date: Sat, 5 Aug 2023 21:44:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9C=AC=E5=AD=90=E5=90=8D?= =?UTF-8?q?=E5=AD=97=E6=88=AA=E5=8F=96;=E4=B8=8B=E8=BD=BD=E7=BA=BF?= =?UTF-8?q?=E7=A8=8B=E5=87=BA=E9=94=99=E6=97=B6=E4=BF=9D=E5=AD=98=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E5=B9=B6=E9=80=80=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/lion/MultiThreadedHTTPServer.java | 3 +- .../lion/Service/DownloadCheckService.java | 2 +- src/main/java/lion/storageNode.java | 48 ++++++++++++------- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/main/java/lion/MultiThreadedHTTPServer.java b/src/main/java/lion/MultiThreadedHTTPServer.java index 782faba..59fec3e 100644 --- a/src/main/java/lion/MultiThreadedHTTPServer.java +++ b/src/main/java/lion/MultiThreadedHTTPServer.java @@ -56,7 +56,8 @@ public class MultiThreadedHTTPServer { if(!path.contains(".")){ file = new File("/root/abc"); }else { - String name = path.split("\\.")[0]; + String name = path.substring(0, path.lastIndexOf('.')); + System.out.println(name); filePath += (name + "/" + name + ".zip"); file = new File(filePath); } diff --git a/src/main/java/lion/Service/DownloadCheckService.java b/src/main/java/lion/Service/DownloadCheckService.java index 4e5cf39..9d2b3fa 100644 --- a/src/main/java/lion/Service/DownloadCheckService.java +++ b/src/main/java/lion/Service/DownloadCheckService.java @@ -28,7 +28,7 @@ public class DownloadCheckService { } public boolean downloadCheck(){ - if(queue.size() == 0) + if(queue.isEmpty()) return false; log.info("下载检查:" + Arrays.toString(queue.toArray())); diff --git a/src/main/java/lion/storageNode.java b/src/main/java/lion/storageNode.java index 25d1466..2f13128 100644 --- a/src/main/java/lion/storageNode.java +++ b/src/main/java/lion/storageNode.java @@ -15,6 +15,9 @@ import io.netty.handler.codec.LengthFieldBasedFrameDecoder; import io.netty.handler.logging.LoggingHandler; import lombok.extern.log4j.Log4j; + +import java.io.FileOutputStream; +import java.io.OutputStream; import java.util.ArrayList; import java.util.ListIterator; import java.util.concurrent.*; @@ -63,23 +66,34 @@ public class storageNode { } public void mainThread(){ - //检查 - if(!downloadCheckService.downloadCheck()) - return; - //发送 - DownloadStatusMessage downloadStatusMessage = new DownloadStatusMessage(); - downloadStatusMessage.setGalleryTasks(queue.toArray(GalleryTask[]::new)); - server.writeAndFlush(downloadStatusMessage); + try { + //检查 + if (!downloadCheckService.downloadCheck()) + return; + //发送 + DownloadStatusMessage downloadStatusMessage = new DownloadStatusMessage(); + downloadStatusMessage.setGalleryTasks(queue.toArray(GalleryTask[]::new)); + server.writeAndFlush(downloadStatusMessage); - ListIterator listIterator = queue.listIterator(); - lock.lock(); - while (listIterator.hasNext()){ - GalleryTask galleryTask = listIterator.next(); - if(galleryTask.is_download_complete()) - listIterator.remove(); + ListIterator listIterator = queue.listIterator(); + lock.lock(); + while (listIterator.hasNext()) { + GalleryTask galleryTask = listIterator.next(); + if (galleryTask.is_download_complete()) + listIterator.remove(); + } + lock.unlock(); + log.info("任务状态发送完成"); + }catch (Exception e){ + e.printStackTrace(); + try (OutputStream outputStream = new FileOutputStream("/root/gallery/storageNode/err.txt")){ + outputStream.write(e.getMessage().getBytes()); + channelFuture.channel().close().sync(); + System.exit(-1); + }catch (Exception ex){ + ex.printStackTrace(); + } } - lock.unlock(); - log.info("任务状态发送完成"); } class MyChannelInboundHandlerAdapter extends ChannelInboundHandlerAdapter{ @@ -101,6 +115,7 @@ public class storageNode { }else if(msg instanceof DownloadPostMessage dpm){ lock.lock(); queue.add(dpm.getGalleryTask()); + System.out.println(queue); lock.unlock(); ctx.writeAndFlush(new ResponseMessage(dpm.messageId, (byte) 0)); @@ -132,6 +147,7 @@ public class storageNode { FileUtil.del(storagePath + ugm.getGalleryTask().getName()); lock.lock(); queue.add(ugm.getGalleryTask()); + System.out.println(queue); lock.unlock(); ctx.writeAndFlush(new ResponseMessage(ugm.messageId, (byte) 0)); @@ -147,7 +163,7 @@ public class storageNode { } @Override - public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { + public void channelUnregistered(ChannelHandlerContext ctx) { if(ctx.channel().equals(server)) { log.info("server 下线"); server = null;