Skip to content

Commit

Permalink
Upgrade joni from 2.1.6 to 2.1.29 (#47570)
Browse files Browse the repository at this point in the history
Backport of #47374

Changed the Grok class to use searchInterruptible(...) instead of search(...)
otherwise we can't interrupt long running matching via the thread watch
dog.

Joni now also provides another way to interrupt long running matches.
By invoking the interrupt() method on the Matcher. We need then to refactor
the watch thread dog to keep track of Matchers instead of Threads, but
it is a better way of doing this, since interrupting would be more direct
(not every 30k iterations) and efficient (checking a volatile field).
This work needs to be done in a follow up.
  • Loading branch information
martijnvg authored Oct 4, 2019
1 parent 0b4fb05 commit 63b169b
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 12 deletions.
9 changes: 1 addition & 8 deletions libs/grok/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
*/

dependencies {
compile 'org.jruby.joni:joni:2.1.6'
compile 'org.jruby.joni:joni:2.1.29'
// joni dependencies:
compile 'org.jruby.jcodings:jcodings:1.0.44'

Expand All @@ -30,10 +30,3 @@ dependencies {
forbiddenApisMain {
replaceSignatureFiles 'jdk-signatures'
}

thirdPartyAudit.ignoreMissingClasses (
// joni has AsmCompilerSupport, but that isn't being used:
'org.objectweb.asm.ClassWriter',
'org.objectweb.asm.MethodVisitor',
'org.objectweb.asm.Opcodes'
)
1 change: 1 addition & 0 deletions libs/grok/licenses/joni-2.1.29.jar.sha1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3cb751702e1194ff24259155db4d37e9383d4320
1 change: 0 additions & 1 deletion libs/grok/licenses/joni-2.1.6.jar.sha1

This file was deleted.

12 changes: 9 additions & 3 deletions libs/grok/src/main/java/org/elasticsearch/grok/Grok.java
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,9 @@ public String toRegex(String grokPattern) {
int result;
try {
threadWatchdog.register();
result = matcher.search(0, grokPatternBytes.length, Option.NONE);
result = matcher.searchInterruptible(0, grokPatternBytes.length, Option.NONE);
} catch (InterruptedException e) {
result = Matcher.INTERRUPTED;
} finally {
threadWatchdog.unregister();
}
Expand Down Expand Up @@ -224,7 +226,9 @@ public boolean match(String text) {
int result;
try {
threadWatchdog.register();
result = matcher.search(0, text.length(), Option.DEFAULT);
result = matcher.searchInterruptible(0, text.length(), Option.DEFAULT);
} catch (InterruptedException e) {
result = Matcher.INTERRUPTED;
} finally {
threadWatchdog.unregister();
}
Expand All @@ -244,7 +248,9 @@ public Map<String, Object> captures(String text) {
int result;
try {
threadWatchdog.register();
result = matcher.search(0, textAsBytes.length, Option.DEFAULT);
result = matcher.searchInterruptible(0, textAsBytes.length, Option.DEFAULT);
} catch (InterruptedException e) {
result = Matcher.INTERRUPTED;
} finally {
threadWatchdog.unregister();
}
Expand Down

0 comments on commit 63b169b

Please sign in to comment.