Periódicamente vemos que la creación de un índice GIN en post_search_data resulta en muchos Lock:relations en el análisis de rendimiento. Matar la sesión que crea este índice libera todas las sesiones bloqueadas. Lo interesante es que el índice utiliza "concurrently", que se supone que no es una operación de bloqueo. También es interesante por qué lo antepone con temp.
CREATE INDEX CONCURRENTLY temp_idx_recent_regular_post_search_data ON post_search_data USING GIN(search_data) WHERE NOT private_message AND post_id >= 12431619
También he intentado reducir idle_in_transaction_session_timeout a 10 minutos (inicialmente estaba configurado a 1 día), pero no hizo ninguna diferencia. ¿Alguien más ha tenido un problema así? Si es así, ¿cómo lo manejaron?
Nuestra versión es Discourse 2.7.0 y la versión de Postgres es 13.8. La aplicación y la base de datos no están en docker, sino alojadas individualmente (ec2, rds).