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;