Параллельное создание индекса не должно блокировать таблицу.
Конечно, это блокирует таблицу. Что должно произойти, если кто-то попытается удалить таблицу во время индексации? Он просто блокирует его в режиме, который не конфликтует с INSERT, UPDATE или DELETE. Но он конфликтует с другими операциями, включая VACUUM и (возможно, по иронии судьбы) другие CREATE INDEX CONCURRENTLY. Также требуется более сильный замок, который конфликтует со всем, но удерживает его только на мгновение. Но если эта блокировка недоступна немедленно, она может истечь по таймауту во время ожидания. Если так, то я думаю, что вы, должно быть, используете некоторую модифицированную версию PostgreSQL, поскольку я не думаю, что какая-либо версия сообщества PostgreSQL ведет себя так.