[ 
https://issues.apache.org/jira/browse/CALCITE-6408?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Julian Hyde reassigned CALCITE-6408:
------------------------------------

    Assignee: Julian Hyde

> Not-null ThreadLocal
> --------------------
>
>                 Key: CALCITE-6408
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6408
>             Project: Calcite
>          Issue Type: Improvement
>            Reporter: Julian Hyde
>            Assignee: Julian Hyde
>            Priority: Major
>
> Many points in the code need to wrap {{ThreadLocal.get()}} in 
> {{requireNonNull}} or {{castNonNull}} to keep checkerFramework happy. This 
> change removes those, by providing a sub-class of ThreadLocal whose values 
> are known to be never null.
> In CALCITE-915 we added {{class TryThreadLocal}} to make it easier to 
> remember to unset a thread-local value, and in commit 
> [f82028f4|https://github.com/apache/calcite/commit/f82028f4b983707bd9af3d9ba73820ef2431e971]
>  we made its {{get}} method return a not-null value. But the only constructor 
> was {{{}TryThreadLocal.of(T initialValue){}}}. In this change, we add 
> {{{}TryThreadLocal.withSupplier(Supplier<T>){}}}, so that each thread can 
> have its own value, and convert all uses of {{ThreadLocal}} where to use it.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to