我在nifi处理器(executeScript处理器)中有代码逻辑,这将减少日志文件(在这种情况下,在我的日志文件中我有相同的文本,所以我想删除重复项,我尝试按名称和文件大小选择它们),但我有时(并不总是)得到负面索引错误,我应该在代码中更改什么才能使其正常工作?
import org.apache.nifi.processor.FlowFileFilter;
import groovy.json.JsonSlurper
import groovy.json.JsonBuilder
import java.nio.charset.StandardCharsets
import org.apache.commons.io.IOUtils
def flowFile = session.get();
def n=0;
if(!flowFile)return
def size = flowFile.getAttribute('Size');
int value = size as Integer;
if((value/338)>=1){
def ffList = session.get(new FlowFileFilter(){
public FlowFileFilterResult filter(FlowFile ff) {
if( size == ff.getAttribute('Size') ){ n++; return FlowFileFilterResult.ACCEPT_AND_CONTINUE;}
else{ return FlowFileFilterResult.REJECT_AND_CONTINUE; }
}
});
session.transfer(ffList[n-1],REL_SUCCESS);
session.remove( ffList[0..-2] )
session.remove(flowFile);
}
else{
session.transfer(flowFile,REL_SUCCESS);
}
答案 0 :(得分:0)
我认为你应该在访问元素之前检查列表的大小。
def ffSize = ffList.size()
if (n <= ffSize && ffSize >= 2) {
session.transfer(ffList[n - 1], REL_SUCCESS)
session.remove(ffList[0..-2])
session.remove(flowFile)
}