Hi Uwe,

It's a future enhancement to allow a class/method to request filtering from stack trace:
    https://bugs.openjdk.java.net/browse/JDK-8212620

This RFE should also take hidden classes into account.

Mandy

On 9/5/20 4:55 AM, Uwe Schindler wrote:
Hi,

I am doing a mockup for dynamically compiled scripts in Apache Lucene (later
also painless scripting in elastcsearch), where I tried to use
Lookup#defineHiddenClass (with default parameters, so weak and no nestmates
- but: for painless scripts of Elasticsearch, nestmates will be great). It
all looks great, as sometimes for every query a new class is generated.

The current approach (Java 8, Java 11) uses a Classloader per script, which
is mostly OK, but hidden classes would be better, especially under high load
with many new classes. The problem I see is: The hidden class and their
methods are also hidden from stack traces, so people neither get the script
source code reference, nor they get the method, which was called at all.

My question is: is it possible to mark such a hidden class in byte code or
by a flag to defineHiddenClass() so it is "unhidden"? - I know you can do
this by a command line option, but that's for developers and debugging only.
In some cases, this is really wanted (like for scripting languages), but
code still wants to use the better class unloading. If this is not possible,
how about extending the Lookup.ClassOption enum (last parameter of
defineHiddenClass), to also pass a flag to show them in stack traces?

Uwe

-----
Uwe Schindler
uschind...@apache.org
ASF Member, Apache Lucene PMC / Committer
Bremen, Germany
https://lucene.apache.org/



Reply via email to