11.18.5.6. Resin で PreparedStatement の キャッシュサイズに大きな値を指定している場合にテナント環境セットアップが失敗する¶
- 本事象は利用するデータベースによって事象内容が異なります。
11.18.5.6.1. 弊社での検証済み環境¶
データベース 事象内容 PostgreSQL テナント環境セットアップ中にエラーが発生します。org.postgresql.util.PSQLException: ERROR: キャッシュした計画は結果型を変更してはなりませんorg.postgresql.util.PSQLException: ERROR: cached plan must not change result typeOracle テナント環境セットアップ中に応答がなくなります。 エラーは発生せず、ブラウザ側で処理中のまま応答がなくなります。 SQL Server テナント環境セットアップが正常に終了します。 弊社での検証済み環境では、本事象は確認されていません。
11.18.5.6.2. 原因¶
- PreparedStatementで使用するクエリが参照するテーブル構成が変更されている場合、PreparedStatementのキャッシュにより、テーブル構成が変更する前の古いクエリが発行されてしまうためです。
11.18.5.6.3. 回避方法¶
- テナント環境セットアップ処理中のみ resin-web.xml prepared-statement-cache-size を「0」にします。ただし、PostgreSQLはJDBCドライバのバージョンによって設定が異なります。Version 9.4-1202以降では<init-param>に preparedStatementCacheQueries を設定する必要があります。詳しくは、「設定ファイルリファレンス」の「プリペアドステートメントキャッシュ設定」を参照してください。テナント環境セットアップ後に再度値を変更してResinの再起動を行ってください。