Yes, the first approach ended in dependency-conflicts.

Thus my current approach for POI uses a small static registry of
"cleaners", so each class which is using thread-locals registers itself for
cleaning and thus the dependency from scratchpad, ooxml, ... to the core
"poi" is properly handled.

Thanks... Dominik.


On Fri, Mar 10, 2023 at 8:37 PM PJ Fanning <[email protected]>
wrote:

> Thanks Dominik - seems like a valid solution. Ideally, there would be
> separate ThreadLocalUtil-like classes for poi-ooxml and poi-scratchpad
> (XSSF vs HSSF) - and probably poi main jar too.
>
> I was thinking myself more along the lines of supporting a flag to turn
> off the use of ThreadLocals (not the default mode, an opt in). This could
> still be added as a separate util method. I think this latter mode will
> prove use once Virtual Threads become more common.
>
>
>
>
>
>
> On Friday 10 March 2023 at 12:51:40 GMT+1, Dominik Stadler <
> [email protected]> wrote:
>
>
>
>
>
> Hi,
>
> Some of them likely have had a valid use-case and would at least cause
> performance issues if removed.
>
> The issues from Tomcat or other WebServers usually come because they check
> if memory is lingering at the point when the thread is "given back" to a
> global pool.
>
> XmlBeans also uses ThreadLocals and there were similar reports some time
> ago. There we provide
>
> https://github.com/apache/xmlbeans/blob/trunk/src/main/java/org/apache/xmlbeans/ThreadLocalUtil.java
> which allows to clean out all ThreadLocals in the current thread and can be
> used in a Web-Application to release stuff at the end if necessary.
>
> I would propose to provide a similar util for POI, I even have an initial
> version of it, but never managed to finish it. Unless you object I can tidy
> it up and add it as solution for anyone having issues with threadlocals.
>
> Dominik.
>
> On Wed, Mar 8, 2023 at 10:09 PM PJ Fanning <[email protected]>
> wrote:
>
> > Hi everyone,
> >
> > We have a lot of open issues about ThreadLocals.
> > https://bz.apache.org/bugzilla/show_bug.cgi?id=66521 was opened today.
> >
> > With Virtual Threads (aka Project Loom), ThreadLocals seem like a bad
> > solution.
> >
> > I've looked at the ThreadLocals in POI a few times and have always
> > struggled to see what they really achieve.
> >
> > Would anyone object if we just simply remove them all?
> >
> > Interacting with individual HSSFWorkbook, XSSFWorkbook and their
> > equivalents using multiple threads seems to be something that we don't
> test
> > much and we could simply say it's a bad idea. Sure, being able to produce
> > multiple separate docs with separate threads is definitely something we
> > want.
> >
> > Does anyone have any thoughts?
> >
> > Regards,
> > PJ
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [email protected]
> > For additional commands, e-mail: [email protected]
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to