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)
}
}