'COPY ... FROM' inserts to btree, blocks on buffer writeout

From: Michael Wildpaner <mike(at)rainbow(dot)studorg(dot)tuwien(dot)ac(dot)at>
To: pgsql-hackers(at)postgresql(dot)org
Subject: 'COPY ... FROM' inserts to btree, blocks on buffer writeout
Date: 2004-12-31 18:04:31
Message-ID: Pine.LNX.4.58.0412311737240.11356@rainbow.studorg.tuwien.ac.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

two concurrent clients try to 'COPY ... FROM ...' to the same table,
"feature_link".

The second one (pid 17983) is waiting for an ExclusiveLock on the table's
primary key index, "key__idpk__flink".

The first one (pid 17980) is inserting into the index's btree, waiting
for a buffer lock. This locking state seems to persist.

Do you have any idea what could cause this scenario and what kind of
debugging information I could extract (the processes are still running) to
find out who is currently holding the buffer lock in question?

Thanks for your help,
best wishes, Mike

[fuchs:~/build/postgresql-8.0.0beta2] vi +1004 ./src/backend/storage/buffer/bufmgr.c
999 /*
1000 * Protect buffer content against concurrent update. (Note that
1001 * hint-bit updates can still occur while the write is in progress,
1002 * but we assume that that will not invalidate the data written.)
1003 */
1004 LockBuffer(buffer, BUFFER_LOCK_SHARE);
1005

[fuchs:~/build/postgresql-8.0.0beta2] gdb src/backend/postgres
[...]
(gdb) attach 17980
[...]
(gdb) where
#0 0x0000002a96181279 in semop () from /lib64/tls/libc.so.6
#1 0x0000000000511707 in PGSemaphoreLock (sema=0x2aa16de2f0, interruptOK=0 '\0') at pg_sema.c:418
#2 0x000000000053549a in LWLockAcquire (lockid=32741, mode=LW_SHARED) at lwlock.c:315
#3 0x0000000000528a3d in FlushBuffer (buf=0x2a9953ea40, reln=0x900640) at bufmgr.c:1004
#4 0x000000000052806d in BufferAlloc (reln=0x2768021, blockNum=3220402560, foundPtr=0x7fbff3728f "") at bufmgr.c:365
#5 0x0000000000527edc in ReadBufferInternal (reln=0x2aa24786b8, blockNum=20055, bufferLockHeld=0 '\0') at bufmgr.c:153
#6 0x000000000044a930 in _bt_getbuf (rel=0x2aa24786b8, blkno=3220402560, access=2) at nbtpage.c:492
#7 0x0000000000448c87 in _bt_split (rel=0x2aa24786b8, buf=673, firstright=89, newitemoff=164, newitemsz=40, newitem=0x911d40, newitemonleft=0 '\0',
itup_off=0x7fbff374c6, itup_blkno=0x7fbff374c8) at nbtinsert.c:683
#8 0x00000000004486ba in _bt_insertonpg (rel=0x2aa24786b8, buf=673, stack=0x9924f0, keysz=1, scankey=0x911d90, btitem=0x911d40, afteritem=0,
split_only_page=0 '\0') at nbtinsert.c:500
#9 0x00000000004481eb in _bt_doinsert (rel=0x2aa24786b8, btitem=0x911d40, index_is_unique=1 '\001', heapRel=0x2aa2477c38) at nbtinsert.c:141
#10 0x000000000044bb71 in btinsert (fcinfo=0x2768021) at nbtree.c:257
#11 0x00000000005a44aa in OidFunctionCall6 (functionId=41320481, arg1=183111222968, arg2=548681250960, arg3=548681250928, arg4=9515332,
arg5=183111220280, arg6=18446744073709551612) at fmgr.c:1487
#12 0x00000000004476a5 in index_insert (indexRelation=0x2aa24786b8, datums=0x7fbff37890, nulls=0x7fbff37870 " î", heap_t_ctid=0x913144,
heapRelation=0x2aa2477c38, check_uniqueness=1 '\001') at indexam.c:226
#13 0x00000000004cf3cf in ExecInsertIndexTuples (slot=0x0, tupleid=0x7fbff37180, estate=0x990450, is_vacuum=0 '\0') at execUtils.c:859
#14 0x000000000049c1d1 in CopyFrom (rel=0x2aa2477c38, attnumlist=0x990060, binary=0 '\0', oids=0 '\0', delim=0x63e4cd "\t", null_print=0x608614 "\\N",
csv_mode=0 '\0', quote=0x0, escape=0x0, force_notnull_atts=0x911cb0) at copy.c:1958
#15 0x000000000049a34f in DoCopy (stmt=0x2768021) at copy.c:1043
#16 0x000000000053d7b9 in PortalRunUtility (portal=0x906b40, query=0x8fa5f0, dest=0x8fa910, completionTag=0x7fbff37f60 "") at pquery.c:839
#17 0x000000000053da41 in PortalRunMulti (portal=0x906b40, dest=0x8fa910, altdest=0x8fa910, completionTag=0x7fbff37f60 "") at pquery.c:902
---Type <return> to continue, or q <return> to quit---
#18 0x000000000053d230 in PortalRun (portal=0x906b40, count=9223372036854775807, dest=0x8fa910, altdest=0x8fa910, completionTag=0x7fbff37f60 "")
at pquery.c:543
#19 0x0000000000539c59 in exec_simple_query (
query_string=0x8fa700 "COPY feature_link from '/anniedev1/impseb/datastore/results/2004/12/29/22/38/bio:query:ncbi-blast:10562062.out_featurelink'")
at postgres.c:924
#20 0x000000000053bf6d in PostgresMain (argc=9414400, argv=0x86f028, username=0x86eff0 "annieseb") at postgres.c:2970
#21 0x0000000000514db7 in BackendRun (port=0x89c650) at postmaster.c:2848
#22 0x0000000000514850 in BackendStartup (port=0x89c650) at postmaster.c:2470
#23 0x0000000000512fde in ServerLoop () at postmaster.c:1215
#24 0x0000000000512446 in PostmasterMain (argc=1, argv=0x804850) at postmaster.c:898
#25 0x00000000004e3206 in main (argc=1, argv=0x804850) at main.c:265

[fuchs:/anniedev1/impseb/work/annie] ps -ef | grep impseb2 | grep -v grep | sort
anniedb2 17976 21254 0 Dec29 ? 00:03:50 postgres: annieseb impseb2 10.44.1.20(33855) idle in transaction
anniedb2 17977 21254 0 Dec29 ? 00:01:38 postgres: annieseb impseb2 10.44.1.20(33856) idle in transaction
anniedb2 17979 21254 0 Dec29 ? 00:03:21 postgres: annieseb impseb2 10.44.1.20(33857) idle in transaction
anniedb2 17980 21254 0 Dec29 ? 00:02:26 postgres: annieseb impseb2 10.44.1.20(33858) COPY
anniedb2 17981 21254 0 Dec29 ? 00:00:53 postgres: annieseb impseb2 10.44.1.20(33859) idle in transaction
anniedb2 17982 21254 0 Dec29 ? 00:03:31 postgres: annieseb impseb2 10.44.1.20(33860) idle in transaction
anniedb2 17983 21254 0 Dec29 ? 00:03:34 postgres: annieseb impseb2 10.44.1.20(33861) COPY waiting
anniedb2 18084 21254 0 Dec29 ? 00:03:15 postgres: annieseb impseb2 10.44.1.20(33863) idle in transaction
anniedb2 23066 21254 0 17:45 ? 00:00:00 postgres: annieseb impseb2 10.44.1.21(45361) idle

[fuchs:/anniedev1/impseb/work/annie] bin/pg-dump-locks
pid 17979
pid 23130
granted: AccessShareLock on table pg_locks (16837)
granted: AccessShareLock on table pg_class (1259)
granted: AccessShareLock on table pg_index (16390)
pid 17981
pid 17983
waiting: ExclusiveLock on table key__idpk__flink (2124233471)
granted: RowExclusiveLock on table ncbi_blast_result (2112117337)
granted: AccessShareLock on table nmt_parameter_set (2112116466)
granted: RowExclusiveLock on table ncbi_blast_round (2112085544)
granted: AccessShareLock on table gpi_learning_set (2112116456)
granted: RowExclusiveLock on table ncbi_blast_alignment (2112117357)
granted: AccessShareLock on table gpi3_learning_set (2112116461)
granted: RowExclusiveLock on table feature_link (2112116486)
granted: AccessShareLock on table managed_file_group (2112116530)
granted: AccessShareLock on table algorithm_index_file (2112116535)
granted: AccessShareLock on table def_parser_type (2112116451)
granted: AccessShareLock on table sequence_type (2112116441)
granted: AccessShareLock on table file_type (2112116515)
granted: AccessShareLock on table managed_file (2112116525)
granted: AccessShareLock on table ptsone_function (2112116471)
granted: AccessShareLock on table toppred_function (2112116476)
granted: RowExclusiveLock on table ncbi_blast_subject (2112085549)
granted: AccessShareLock on table set_type (2112116436)
granted: AccessShareLock on table data_store (2112116520)
granted: AccessShareLock on table sequence_alphabet (2112116431)
pid 17980
granted: AccessShareLock on table data_store (2112116520)
granted: RowExclusiveLock on table ncbi_blast_subject (2112085549)
granted: AccessShareLock on table managed_file_group (2112116530)
granted: RowExclusiveLock on table ncbi_blast_round (2112085544)
granted: AccessShareLock on table ptsone_function (2112116471)
granted: ExclusiveLock on table key__idpk__flink (2124233471)
granted: AccessShareLock on table algorithm_index_file (2112116535)
granted: AccessShareLock on table toppred_function (2112116476)
granted: AccessShareLock on table def_parser_type (2112116451)
granted: AccessShareLock on table file_type (2112116515)
granted: RowExclusiveLock on table feature_link (2112116486)
granted: AccessShareLock on table sequence_type (2112116441)
granted: AccessShareLock on table managed_file (2112116525)
granted: AccessShareLock on table sequence_alphabet (2112116431)
granted: AccessShareLock on table gpi_learning_set (2112116456)
granted: AccessShareLock on table set_type (2112116436)
granted: RowExclusiveLock on table ncbi_blast_result (2112117337)
granted: AccessShareLock on table gpi3_learning_set (2112116461)
granted: RowExclusiveLock on table ncbi_blast_alignment (2112117357)
granted: AccessShareLock on table nmt_parameter_set (2112116466)
pid 17982
pid 18084
granted: AccessShareLock on table changeable_bio_set (2112116407)
granted: AccessShareLock on table ojb_splice_list (2112117699)
granted: AccessShareLock on table set_type (2112116436)
granted: AccessShareLock on table sequence_alphabet (2112116431)
pid 17976
pid 17977

impseb2=# select * from pg_locks;
relation | database | transaction | pid | mode | granted
------------+------------+-------------+-------+------------------+---------
2112117337 | 2112078897 | | 17983 | RowExclusiveLock | t
| | 26991056 | 17979 | ExclusiveLock | t
2112116466 | 2112078897 | | 17983 | AccessShareLock | t
2112085544 | 2112078897 | | 17983 | RowExclusiveLock | t
| | 26991864 | 17983 | ExclusiveLock | t
2112116520 | 2112078897 | | 17980 | AccessShareLock | t
2112116407 | 2112078897 | | 18084 | AccessShareLock | t
2112116456 | 2112078897 | | 17983 | AccessShareLock | t
2112085549 | 2112078897 | | 17980 | RowExclusiveLock | t
2112117357 | 2112078897 | | 17983 | RowExclusiveLock | t
2112116461 | 2112078897 | | 17983 | AccessShareLock | t
| | 26990698 | 17981 | ExclusiveLock | t
2112116530 | 2112078897 | | 17980 | AccessShareLock | t
2112085544 | 2112078897 | | 17980 | RowExclusiveLock | t
| | 26991878 | 17980 | ExclusiveLock | t
2112116486 | 2112078897 | | 17983 | RowExclusiveLock | t
2112117699 | 2112078897 | | 18084 | AccessShareLock | t
2112116530 | 2112078897 | | 17983 | AccessShareLock | t
2112116535 | 2112078897 | | 17983 | AccessShareLock | t
2112116471 | 2112078897 | | 17980 | AccessShareLock | t
2124233471 | 2112078897 | | 17980 | ExclusiveLock | t
2112116436 | 2112078897 | | 18084 | AccessShareLock | t
2112116535 | 2112078897 | | 17980 | AccessShareLock | t
2112116476 | 2112078897 | | 17980 | AccessShareLock | t
| | 26990811 | 17977 | ExclusiveLock | t
2112116451 | 2112078897 | | 17980 | AccessShareLock | t
16837 | 2112078897 | | 23060 | AccessShareLock | t
2112116451 | 2112078897 | | 17983 | AccessShareLock | t
2112116441 | 2112078897 | | 17983 | AccessShareLock | t
2112116515 | 2112078897 | | 17983 | AccessShareLock | t
2112116525 | 2112078897 | | 17983 | AccessShareLock | t
2112116515 | 2112078897 | | 17980 | AccessShareLock | t
2112116471 | 2112078897 | | 17983 | AccessShareLock | t
| | 27016842 | 18084 | ExclusiveLock | t
2112116476 | 2112078897 | | 17983 | AccessShareLock | t
2112116486 | 2112078897 | | 17980 | RowExclusiveLock | t
2112116441 | 2112078897 | | 17980 | AccessShareLock | t
2112116525 | 2112078897 | | 17980 | AccessShareLock | t
| | 27018036 | 17976 | ExclusiveLock | t
2112116431 | 2112078897 | | 17980 | AccessShareLock | t
2112116456 | 2112078897 | | 17980 | AccessShareLock | t
2112085549 | 2112078897 | | 17983 | RowExclusiveLock | t
2112116436 | 2112078897 | | 17980 | AccessShareLock | t
2112116436 | 2112078897 | | 17983 | AccessShareLock | t
2112117337 | 2112078897 | | 17980 | RowExclusiveLock | t
2112116461 | 2112078897 | | 17980 | AccessShareLock | t
2112117357 | 2112078897 | | 17980 | RowExclusiveLock | t
2112116466 | 2112078897 | | 17980 | AccessShareLock | t
2112116520 | 2112078897 | | 17983 | AccessShareLock | t
| | 26991357 | 17982 | ExclusiveLock | t
| | 27018054 | 23060 | ExclusiveLock | t
2124233471 | 2112078897 | | 17983 | ExclusiveLock | f
2112116431 | 2112078897 | | 17983 | AccessShareLock | t
2112116431 | 2112078897 | | 18084 | AccessShareLock | t
(54 rows)

--
Do not feel safe. The poet remembers. DI Michael Wildpaner
You can kill one, but another is born. Ph.D. Student
The words are written down,
the deed, the date. (Czeslaw Milosz)

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2004-12-31 19:18:33 Re: uptime() for postmaster
Previous Message Matthias Schmidt 2004-12-31 13:06:13 uptime() for postmaster