ENT#3754 오픈소스 번들 버전 업데이트

오픈소스 버전 변화

로그프레소에서 사용하는 오픈소스 번들을 다음과 같이 업데이트했습니다.

  • org.apache.felix.framework 5.6.10 → 6.0.5
  • org.apache.commons.commons-codec 1.8.0 → 1.15.0
  • org.apache.commons.math3 3.5.0 → 3.6.1
  • org.snmp4j.snmp4j 1.11.5 → 2.8.7.j7
  • org.xerial.snappy.snappy-java 1.1.2.6-eediom → 1.1.8.4-logpresso
  • com.google.guava 14.0.1.1 → 30.1.1.jre
  • groovy-all 2.2.1 → groovy 3.0.8
  • jackson-core-asl 1.9.12 → com.fasterxml.jackson.core.jackson-core 2.12.4

log4j를 참조하던 asterdata jdbc 번들은 기본 패키지에서 제거되었습니다

Groovy 코드 호환성 이슈

Caution
Groovy 번들이 업데이트에 따라 타입 체크 오류가 발생할 수 있습니다. 이 경우 기존 스크립트를 다음과 같이 수정하여 우회할 수 있습니다.
@CompileStatic(groovy.transform.TypeCheckingMode.SKIP)

예를 들어, 아래 groovy 스크립트는 8번 줄에서 타입 체크 오류가 발생합니다.

byte[] payload = row.get('payload')

import groovy.transform.CompileStatic;
import org.araqne.logdb.Row;
import org.araqne.logdb.groovy.GroovyQueryScript;

@CompileStatic
class ToAscii extends GroovyQueryScript {
  def void onRow(Row row) {
    byte[] payload = row.get('payload')

    char[] chars = new char[payload.length];
    for (int i = 0; i < payload.length; i++) {
      char c = (char) payload[i]
      if (c < 32 || c > 126)
        c = '.'
      chars[i] = c 
    }

    row.put('text', new String(chars))
    pipe.onRow(row)
  }
}

다음과 같이 스크립트를 수정하면 정상 동작합니다.

import groovy.transform.CompileStatic;
import org.araqne.logdb.Row;
import org.araqne.logdb.groovy.GroovyQueryScript;

@CompileStatic(groovy.transform.TypeCheckingMode.SKIP)
class ToAscii extends GroovyQueryScript {
  def void onRow(Row row) {
    byte[] payload = row.get('payload')

    char[] chars = new char[payload.length];
    for (int i = 0; i < payload.length; i++) {
      char c = (char) payload[i]
      if (c < 32 || c > 126)
        c = '.'
      chars[i] = c 
    }

    row.put('text', new String(chars))
    pipe.onRow(row)
  }
}