提交 d6f49bc9 编写于 作者: Z zhangxin10

修复offset文件中的无用文件没有被删除

上级 e22111d5
package com.ai.cloud.skywalking.reciever.persistance;
import com.ai.cloud.skywalking.reciever.conf.Config;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.*;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
......@@ -24,7 +27,7 @@ public class MemoryRegister {
if (logger.isDebugEnabled()) {
logger.debug("Register entry[{}] into the memory register", fileName);
}
if (entries.containsKey(fileName)){
if (entries.containsKey(fileName)) {
entries.get(fileName).setOffset(offset);
}
}
......@@ -39,7 +42,7 @@ public class MemoryRegister {
}
public void removeEntry(String fileName){
public void removeEntry(String fileName) {
entries.remove(fileName);
}
......@@ -96,6 +99,12 @@ public class MemoryRegister {
private MemoryRegister() {
BufferedReader reader;
// 在处理数据之前需要初始化处理文件的处理状态
//去掉entries中无法与缓存数据文件匹配的文件
File parentDir = new File(Config.Buffer.DATA_BUFFER_FILE_PARENT_DIRECTORY);
//上次未处理的缓存数据文件,entries内的数据主要以缓存
List<String> bufferFileNameList = Arrays.asList(parentDir.list());
try {
// 读取offset文件
file = new File(REGISTER_FILE_PARENT_DIRECTORY, REGISTER_FILE_NAME);
......@@ -108,7 +117,9 @@ public class MemoryRegister {
String offsetData;
while ((offsetData = reader.readLine()) != null && !"EOF".equals(offsetData)) {
String[] ss = offsetData.split("\t");
entries.put(ss[0], new FileRegisterEntry(ss[0], Integer.valueOf(ss[1]), FileRegisterEntry.FileRegisterEntryStatus.UNREGISTER));
if (bufferFileNameList.contains(ss[0])) {
entries.put(ss[0], new FileRegisterEntry(ss[0], Integer.valueOf(ss[1]), FileRegisterEntry.FileRegisterEntryStatus.UNREGISTER));
}
}
}
// 创建offset文件
......@@ -120,12 +131,16 @@ public class MemoryRegister {
while ((offsetData = reader.readLine()) != null && !"EOF".equals(offsetData)) {
try {
String[] ss = offsetData.split("\t");
entries.put(ss[0], new FileRegisterEntry(ss[0], Integer.valueOf(ss[1]), FileRegisterEntry.FileRegisterEntryStatus.UNREGISTER));
if (bufferFileNameList.contains(ss[0])) {
entries.put(ss[0], new FileRegisterEntry(ss[0], Integer.valueOf(ss[1]), FileRegisterEntry.FileRegisterEntryStatus.UNREGISTER));
}
} catch (Exception e) {
continue;
}
}
}
} catch (FileNotFoundException e) {
logger.error("The offset file does not exist.", e);
checkOffSetExists();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册