[
https://issues.apache.org/jira/browse/LUCENE-9110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17004094#comment-17004094
]
ASF subversion and git services commented on LUCENE-9110:
---------------------------------------------------------
Commit e06ad4cfb587e1bb69a80c0b531df0e52c2da89b in lucene-solr's branch
refs/heads/master from Uwe Schindler
[ https://gitbox.apache.org/repos/asf?p=lucene-solr.git;h=e06ad4c ]
LUCENE-9110: Refactor stack analysis in tests to use generalized LuceneTestCase
methods that use StackWalker
> Use StackWalker in tests instead of iterating through StackTraceElement arrays
> ------------------------------------------------------------------------------
>
> Key: LUCENE-9110
> URL: https://issues.apache.org/jira/browse/LUCENE-9110
> Project: Lucene - Core
> Issue Type: Improvement
> Components: general/test
> Reporter: Uwe Schindler
> Assignee: Uwe Schindler
> Priority: Major
> Fix For: master (9.0), 8.5
>
> Time Spent: 1h
> Remaining Estimate: 0h
>
> Followup of LUCENE-9109:
> There are a lot of tests (especially around IndexWriter) that look into stack
> traces to inject failures or check that some methods were called in their
> call stack.
> This issue will refactor all those tests by adding a few methods to
> LuceneTestCase that make it easy to verify if some method call/class is in
> stack trace. On master (Java 11) we can use StackWalker to do this checks,
> which has a speedup of sometimes >>2 times (depending on how deep you dive
> into call stack).
> There are a few tests (only 3) that do more complex stack trace analysis.
> Those should be refactored at some point. For now I added a deprecated method
> to get the whole StackTrace in Java 11, which is still 2 times faster than
> using an Exception.
> For branch 8.x i will apply the same patch, just the LuceneTestCase methods
> use the old "Java 8" way to inspect stack trace using the thread's stack
> trace (which is very expensive).
> So this issue is mainly about refactoring the tests to use a common method
> pattern to check the existence of stack frames.
> One important thing is: Using StackWalker makes sure that the stack is
> "correct". Stacks from Thread or Exception may miss some frames, as it does
> not deoptimize the code. So depending on JVMs and optimizations (e.g. Graal),
> call stacks may change if we still use old code for analysis. This is no
> longer an issue for Java 8, but may be in future.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]