We've got an app, I don't know all the details of the schema offhand,
but its using date partitioned tables, its heavily multithreaded and
processing continuous events... Under load, production (overseas) is
getting a SQL deadlock...
Process 20333: DROP table data_details_20100718
Process 20333 waits for AccessExclusiveLock on relation 29609 of
database 16384; blocked by process 20307.
Process 20307: select * from data_daily where f1 =$1 and f2=$2 and
f3=$3 and f4=$4 and ...
Process 20307 waits for AccessShareLock on relation 28523 of
database 16384; blocked by process 20333.
I'm -assuming- that the table being dropped is a partition of the other
table. I've asked the developers (my coworkers) to confirm, and for
any details of how they are doing the partitions.
does anyone have any suggestions for what to look for, or what sort of
common partition management mistakes in the application could lead to
this sort of deadlock?