[ 
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 2:09 PM:
-----------------------------------------------------------------

I backported the removal of AccessController 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 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.

> 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-unsubscr...@lucene.apache.org
For additional commands, e-mail: issues-h...@lucene.apache.org

Reply via email to