Hi,
    I just found that ShutdownPostgres() only releases USER_LOCKMETHOD locks, 
so why not
release DEFAULT_LOCKMETHOD locks? Check if this is possible:
    We are doing a CREATE INDEX CONCURRENTLY, and codes runs to

    LockRelationIdForSession(&heaprelid, ShareUpdateExclusiveLock);

    PopActiveSnapshot();
    CommitTransactionCommand();
    
Now transaction goes to default state, then this backend is killed or some 
FATAL error happens,
AbortOutOfAnyTransaction() in ShutdownPostgres() will do nothing since 
transaction is in default
state, and session lock on heaprelid is still held after  ShutdownPostgres(), 
so subsequent operations
could be blocked by this session lock.

Thanks.
                                          

Reply via email to