diff --git a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/component/ApplicationComponentSpanListener.java b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/component/ApplicationComponentSpanListener.java index 395bb58d609e3b5938fb43434d0ab24f5c66b9b3..dc095c5ac6558a3d1beb442d076ad97fc2c05d7a 100644 --- a/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/component/ApplicationComponentSpanListener.java +++ b/apm-collector/apm-collector-analysis/analysis-metric/metric-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/metric/provider/worker/application/component/ApplicationComponentSpanListener.java @@ -43,7 +43,7 @@ public class ApplicationComponentSpanListener implements EntrySpanListener, Exit } @Override public boolean containsPoint(Point point) { - return Point.Entry.equals(point) || Point.Exit.equals(point) || Point.First.equals(point); + return Point.Entry.equals(point) || Point.Exit.equals(point); } @Override diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisSegmentParserModuleConfig.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisSegmentParserModuleConfig.java index c8c7886d2ae494ad2cc41e575564d3574ad1a48d..8c277177be8a8c5b33e66c6c6e3ff469f0aa4ea3 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisSegmentParserModuleConfig.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/AnalysisSegmentParserModuleConfig.java @@ -28,6 +28,7 @@ public class AnalysisSegmentParserModuleConfig extends ModuleConfig { private String bufferFilePath; private String bufferOffsetMaxFileSize; private String bufferSegmentMaxFileSize; + private boolean bufferFileCleanWhenRestart; public String getBufferFilePath() { return bufferFilePath; @@ -52,4 +53,12 @@ public class AnalysisSegmentParserModuleConfig extends ModuleConfig { public void setBufferSegmentMaxFileSize(String bufferSegmentMaxFileSize) { this.bufferSegmentMaxFileSize = bufferSegmentMaxFileSize; } + + public boolean isBufferFileCleanWhenRestart() { + return bufferFileCleanWhenRestart; + } + + public void setBufferFileCleanWhenRestart(boolean bufferFileCleanWhenRestart) { + this.bufferFileCleanWhenRestart = bufferFileCleanWhenRestart; + } } diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/BufferFileConfig.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/BufferFileConfig.java index 8708e393e6c5bf04889fb3236dcb35cfd60cdf14..f1f7ee613804263293eb6e58063932bd3e599e6f 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/BufferFileConfig.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/BufferFileConfig.java @@ -28,6 +28,7 @@ public class BufferFileConfig { static int BUFFER_OFFSET_MAX_FILE_SIZE = 10 * 1024 * 1024; static int BUFFER_SEGMENT_MAX_FILE_SIZE = 10 * 1024 * 1024; static String BUFFER_PATH = "../buffer/"; + static boolean BUFFER_FILE_CLEAN_WHEN_RESTART = false; public static class Parser { @@ -77,6 +78,8 @@ public class BufferFileConfig { } else { BUFFER_SEGMENT_MAX_FILE_SIZE = 1024 * 1024; } + + BUFFER_FILE_CLEAN_WHEN_RESTART = config.isBufferFileCleanWhenRestart(); } } } diff --git a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/SegmentBufferManager.java b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/SegmentBufferManager.java index d4e066724e8983ce9160c2a39e77056437921fd2..d7add8e480be7f1917975faee0f805b404c7ff84 100644 --- a/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/SegmentBufferManager.java +++ b/apm-collector/apm-collector-analysis/analysis-segment-parser/segment-parser-provider/src/main/java/org/apache/skywalking/apm/collector/analysis/segment/parser/provider/buffer/SegmentBufferManager.java @@ -18,16 +18,11 @@ package org.apache.skywalking.apm.collector.analysis.segment.parser.provider.buffer; -import java.io.File; -import java.io.FileOutputStream; -import java.io.IOException; +import java.io.*; import org.apache.skywalking.apm.collector.core.module.ModuleManager; -import org.apache.skywalking.apm.collector.core.util.Const; -import org.apache.skywalking.apm.collector.core.util.StringUtils; -import org.apache.skywalking.apm.collector.core.util.TimeBucketUtils; +import org.apache.skywalking.apm.collector.core.util.*; import org.apache.skywalking.apm.network.proto.UpstreamSegment; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.slf4j.*; /** * @author peng-yongsheng @@ -46,6 +41,9 @@ public enum SegmentBufferManager { OffsetManager.INSTANCE.initialize(); if (new File(BufferFileConfig.BUFFER_PATH).mkdirs()) { newDataFile(); + } else if (BufferFileConfig.BUFFER_FILE_CLEAN_WHEN_RESTART) { + deleteFiles(); + newDataFile(); } else { String writeFileName = OffsetManager.INSTANCE.getWriteFileName(); if (StringUtils.isNotEmpty(writeFileName)) { @@ -84,7 +82,11 @@ public enum SegmentBufferManager { String timeBucket = String.valueOf(TimeBucketUtils.INSTANCE.getSecondTimeBucket(System.currentTimeMillis())); String writeFileName = DATA_FILE_PREFIX + "_" + timeBucket + "." + Const.FILE_SUFFIX; File dataFile = new File(BufferFileConfig.BUFFER_PATH + writeFileName); - dataFile.createNewFile(); + boolean created = dataFile.createNewFile(); + if (!created) { + logger.info("The file named {} already exists.", writeFileName); + } + OffsetManager.INSTANCE.setWriteOffset(writeFileName, 0); try { if (outputStream != null) { @@ -97,6 +99,16 @@ public enum SegmentBufferManager { } } + private void deleteFiles() { + File bufferDirectory = new File(BufferFileConfig.BUFFER_PATH); + boolean delete = bufferDirectory.delete(); + if (delete) { + logger.info("Buffer directory is successfully deleted"); + } else { + logger.info("Buffer directory is not deleted"); + } + } + public synchronized void flush() { } } diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml index b5fa4b849783e2e83d2ee942b33a7aa9ae55c6a8..33995cd9700fdac34b4609a3ed325ac02159c9fd 100644 --- a/apm-collector/apm-collector-boot/src/main/resources/application.yml +++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml @@ -54,6 +54,7 @@ analysis_segment_parser: bufferFilePath: ../buffer/ bufferOffsetMaxFileSize: 10M bufferSegmentMaxFileSize: 500M + bufferFileCleanWhenRestart: true ui: jetty: host: localhost