diff --git a/docs/changelog/139075.yaml b/docs/changelog/139075.yaml new file mode 100644 index 0000000000000..e238a413d5eb9 --- /dev/null +++ b/docs/changelog/139075.yaml @@ -0,0 +1,5 @@ +pr: 139075 +summary: Bump jruby/joni to 2.2.6 +area: Ingest Node +type: enhancement +issues: [] diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index de65083fff993..1177e0ee766cf 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -4418,14 +4418,14 @@ - - - + + + - - - + + + diff --git a/libs/grok/build.gradle b/libs/grok/build.gradle index 2a74927fedd83..e1b1735d9b9e5 100644 --- a/libs/grok/build.gradle +++ b/libs/grok/build.gradle @@ -9,9 +9,9 @@ apply plugin: 'elasticsearch.publish' dependencies { - api 'org.jruby.joni:joni:2.1.29' + api 'org.jruby.joni:joni:2.2.6' // joni dependencies: - api 'org.jruby.jcodings:jcodings:1.0.44' + api 'org.jruby.jcodings:jcodings:1.0.63' testImplementation(project(":test:framework")) { exclude group: 'org.elasticsearch', module: 'grok' diff --git a/libs/grok/src/main/java/org/elasticsearch/grok/Grok.java b/libs/grok/src/main/java/org/elasticsearch/grok/Grok.java index 284ede5d0f4f2..35bcb8c166248 100644 --- a/libs/grok/src/main/java/org/elasticsearch/grok/Grok.java +++ b/libs/grok/src/main/java/org/elasticsearch/grok/Grok.java @@ -105,8 +105,8 @@ private static String groupMatch(String name, Region region, String pattern) { name.getBytes(StandardCharsets.UTF_8).length, region ); - int begin = region.beg[number]; - int end = region.end[number]; + int begin = region.getBeg(number); + int end = region.getEnd(number); if (begin < 0) { // no match found return null; } @@ -159,7 +159,12 @@ String toRegex(PatternBank patternBank, String grokPattern) { grokPart = String.format(Locale.US, "(?<%s>%s)", patternName + "_" + result, pattern); } String start = new String(grokPatternBytes, 0, result, StandardCharsets.UTF_8); - String rest = new String(grokPatternBytes, region.end[0], grokPatternBytes.length - region.end[0], StandardCharsets.UTF_8); + String rest = new String( + grokPatternBytes, + region.getEnd(0), + grokPatternBytes.length - region.getEnd(0), + StandardCharsets.UTF_8 + ); grokPattern = grokPart + rest; res.append(start); } diff --git a/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureConfig.java b/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureConfig.java index 2c88e664888a0..52f941de2c6c9 100644 --- a/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureConfig.java +++ b/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureConfig.java @@ -55,35 +55,35 @@ public GrokCaptureType type() { */ public GrokCaptureExtracter objectExtracter(Consumer emit) { // We could probably write this code a little more concisely but this makes it clear where we are boxing - return nativeExtracter(new NativeExtracterMap() { + return nativeExtracter(new NativeExtracterMap<>() { @Override public GrokCaptureExtracter forString(Function, GrokCaptureExtracter> buildExtracter) { - return buildExtracter.apply(str -> emit.accept(str)); + return buildExtracter.apply(emit::accept); } @Override public GrokCaptureExtracter forInt(Function buildExtracter) { - return buildExtracter.apply(i -> emit.accept(Integer.valueOf(i))); + return buildExtracter.apply(emit::accept); } @Override public GrokCaptureExtracter forLong(Function buildExtracter) { - return buildExtracter.apply(l -> emit.accept(Long.valueOf(l))); + return buildExtracter.apply(emit::accept); } @Override public GrokCaptureExtracter forFloat(Function buildExtracter) { - return buildExtracter.apply(f -> emit.accept(Float.valueOf(f))); + return buildExtracter.apply(emit::accept); } @Override public GrokCaptureExtracter forDouble(Function buildExtracter) { - return buildExtracter.apply(d -> emit.accept(Double.valueOf(d))); + return buildExtracter.apply(emit::accept); } @Override public GrokCaptureExtracter forBoolean(Function, GrokCaptureExtracter> buildExtracter) { - return buildExtracter.apply(b -> emit.accept(b)); + return buildExtracter.apply(emit::accept); } }); } @@ -92,18 +92,18 @@ public GrokCaptureExtracter forBoolean(Function, GrokCaptureEx * Build an extract that has access to the "native" type of the extracter * match. This means that patterns like {@code %{NUMBER:bytes:float}} has * access to an actual {@link float}. Extracters returned from this method - * should be stateless stateless and can be reused. Pathological implementations + * should be stateless and can be reused. Pathological implementations * of the {@code map} parameter could violate this, but the caller should * take care to stay sane. *

* While the goal is to produce a {@link GrokCaptureExtracter} that provides * a primitive, the caller can produce whatever type-safe constructs it - * needs and return them from this method. Thus the {@code } in the type + * needs and return them from this method. Thus, the {@code } in the type * signature. * * @param The type of the result. * @param map Collection of handlers for each native type. Only one method - * will be called but well behaved implementers are stateless. + * will be called but well-behaved implementers are stateless. * @return whatever was returned by the handler. */ public T nativeExtracter(NativeExtracterMap map) { @@ -111,7 +111,7 @@ public T nativeExtracter(NativeExtracterMap map) { } /** - * Collection of handlers for each native type. Well behaved implementations + * Collection of handlers for each native type. Well-behaved implementations * are stateless and produce stateless results. */ public interface NativeExtracterMap { @@ -153,9 +153,9 @@ public interface NativeExtracterMap { public GrokCaptureExtracter rangeExtracter(Consumer emit) { return (utf8Bytes, offset, region) -> { for (int number : backRefs) { - if (region.beg[number] >= 0) { - int matchOffset = offset + region.beg[number]; - int matchLength = region.end[number] - region.beg[number]; + if (region.getBeg(number) >= 0) { + int matchOffset = offset + region.getBeg(number); + int matchLength = region.getEnd(number) - region.getBeg(number); String match = new String(utf8Bytes, matchOffset, matchLength, StandardCharsets.UTF_8); emit.accept(new GrokCaptureExtracter.Range(match, matchOffset, matchLength)); } diff --git a/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureType.java b/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureType.java index 2f7aff8dfa015..c19c1dcda2669 100644 --- a/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureType.java +++ b/libs/grok/src/main/java/org/elasticsearch/grok/GrokCaptureType.java @@ -72,9 +72,9 @@ static GrokCaptureType fromString(String str) { protected static GrokCaptureExtracter rawExtracter(int[] backRefs, Consumer emit) { return (utf8Bytes, offset, region) -> { for (int number : backRefs) { - if (region.beg[number] >= 0) { - int matchOffset = offset + region.beg[number]; - int matchLength = region.end[number] - region.beg[number]; + if (region.getBeg(number) >= 0) { + int matchOffset = offset + region.getBeg(number); + int matchLength = region.getEnd(number) - region.getBeg(number); emit.accept(new String(utf8Bytes, matchOffset, matchLength, StandardCharsets.UTF_8)); } } diff --git a/x-pack/plugin/redact/src/main/java/org/elasticsearch/xpack/redact/RedactProcessor.java b/x-pack/plugin/redact/src/main/java/org/elasticsearch/xpack/redact/RedactProcessor.java index c8f4e627c57b8..00d7a056ffef3 100644 --- a/x-pack/plugin/redact/src/main/java/org/elasticsearch/xpack/redact/RedactProcessor.java +++ b/x-pack/plugin/redact/src/main/java/org/elasticsearch/xpack/redact/RedactProcessor.java @@ -278,8 +278,8 @@ public void extract(byte[] utf8Bytes, int offset, Region region) { assert patternName != null; int number = 0; - int matchOffset = offset + region.beg[number]; - int matchEnd = offset + region.end[number]; + int matchOffset = offset + region.getBeg(number); + int matchEnd = offset + region.getEnd(number); replacementPositions.add(new Replacement(matchOffset, matchEnd, patternName)); }