使われない期限/heartbeat カラムは恒久ブロックの罠になる
並行処理
排他制御
設計判断
信頼性
知識
原則
排他ロックのテーブルに expires_at / heartbeat_at カラムと index を足したのに、実際には誰も読み書きしていない状態(作成時は expiresAt=null、worker は heartbeat 更新も期限切れ奪取もしない、回収 cron も無い、検索クエリが期限を見ない)は危険。
一度でも worker 異常終了などで lock が stale 化すると、期限を見ない検索(findByTenantId 等)が古いロックを生きていると誤認し続け、そのテナント/資源が恒久的にブロックされる。
期限・heartbeat の仕組みを入れるなら、カラムだけでなく『書き込み(作成時 expiresAt 設定)・更新(処理中 heartbeat)・期限切れの奪取/回収(cron か作成時チェック)』まで実配線する。当面入れないなら『stale ロックは手動対応』を設計ドキュメントに明記する。dead schema(宣言だけで配線されないスキーマ)を放置しない。