You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Uwe Schindler (Jira)" <ji...@apache.org> on 2019/12/25 12:54:00 UTC

[jira] [Comment Edited] (LUCENE-9109) Use Java 9+ StackWalker to implement TestSecurityManager's detection of JVM exit

    [ https://issues.apache.org/jira/browse/LUCENE-9109?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17003268#comment-17003268 ] 

Uwe Schindler edited comment on LUCENE-9109 at 12/25/19 12:53 PM:
------------------------------------------------------------------

I backported the removal of SecurityManager to 8.x.

I wanted to refactor the code and use the same stream logic like with StackWalker, but this was impossible as Java 8 does not support {{Stream#dropWhile()}} and {{Predicate#not()}}. So I left the main logic as is in 8.x.


was (Author: thetaphi):
I backported the removal of SecurityManager to 8.x.

I wanted to refaczor the code and use the same stream logic like with StackWalker, but this was impossible as Java 8 does not support {{Stream#dropWhile()}} and {{Predicate#not()}}. So I left the main logic as is in 8.x.

> Use Java 9+ StackWalker to implement TestSecurityManager's detection of JVM exit
> --------------------------------------------------------------------------------
>
>                 Key: LUCENE-9109
>                 URL: https://issues.apache.org/jira/browse/LUCENE-9109
>             Project: Lucene - Core
>          Issue Type: Improvement
>          Components: modules/test-framework
>            Reporter: Uwe Schindler
>            Assignee: Uwe Schindler
>            Priority: Major
>             Fix For: master (9.0)
>
>          Time Spent: 1h
>  Remaining Estimate: 0h
>
> This is just a small improvement in Lucene/Solr master (Java 11) to detect exit of JVM in our test framework. There are other places in Lucene that use ineffective ways to inspect the stack trace.
> This one optimizes the implementation of TestSecurityManager#checkExit(status) to disallow all JVM exits outside of the official test runner by using StackWalker. In addition this needs no additional permissions, because we do not instruct StackWalker to fetch all crazy stuff like Class instances of stack elements.
> The way how this works is: Walk through stack trace:
> - skip all internal frames (those which come before the actual exit call)
> - skip all frmes with the actual exit call
> - limit to one more frame (the method calling System.exit())
> - check if that remaining frame is on our whitelist
> This can only be commited to master (9.0), as it requires Java 9.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org