shardingsphere
shardingsphere copied to clipboard
How to obtain main thread information in HintManager thread pool scenario
In a multi-tenant project implemented using Spring Boot, JPA, and ShardingSphere JDBC 5.2.1, I need to access the corresponding table based on the requested tenant ID. For instance, when user 'a' under a certain system tenant accesses student information, the SQL should be routed to the table t_student_{tenant_id}. Currently, this works as expected when called from the main thread. However, when invoked via asynchronous threads or parallel calls using Stream (with ForkJoinPool), since HintManager relies on ThreadLocal for context propagation and fails to inherit the parent thread's information, what approaches can be taken to achieve this goal?
Can you try the new 5.5.0 version? This version may solve this problem.
Since this issue has long time no response, I will close it.
I looked at the new implementation and it doesn't seem to have changed much
I looked at the new implementation and it doesn't seem to have changed much
Hi @penweizgx I checked the code again and there is indeed no modification here. I think we can try to use TransmittableThreadLocal
to solve this problem.
yes
Hi @penweizgx, can you test master branch?
@strongduanmu My local jar package has not been upgraded, but HintManager has been changed to this, which can solve the problems I encountered.