修复offset文件中的无用文件没有被删除
This commit is contained in:
parent
e22111d5cc
commit
d6f49bc931
|
|
@ -1,10 +1,13 @@
|
|||
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();
|
||||
|
|
|
|||
Loading…
Reference in New Issue