テナントごとにデータベース/スキーマを持つマルチテナント サーバーを構築しています。これを行うには、Springs AbstractRoutingDataSource を使用して、テナントに基づいてデータ ソースを切り替えます。
テナントは、サーブレット フィルターの URL のサブ ドメインによって決定されます。このテナントは、スレッド ローカルに格納されます。
スレッドが開始されるまで、これはすべて正常に機能します。たとえば、休止状態の検索でインデックスが再作成されると、多くのスレッドが開始されます。
これらのスレッドの 1 つが接続を取得しようとすると、スレッド ローカルが null を返し、テナントを特定する方法がありません。