>

로그 파일을 줄이는 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);
}


  • 답변 # 1

    요소에 액세스하기 전에 목록의 크기를 확인해야한다고 생각합니다.

    def ffSize = ffList.size()
    if (n <= ffSize && ffSize >= 2) {
        session.transfer(ffList[n - 1], REL_SUCCESS)
        session.remove(ffList[0..-2])
        session.remove(flowFile)
    }
    
    

  • 이전 java - 특정 OS 버전에서 NoSuchMethodError
  • 다음 sql server - 마지막으로 파이프 라인을 실행 한 Data Factory V1 시스템 변수