The following bug has been logged on the website:
Bug reference: 10141
Logged by: Evgen Bodunov
Email address: molind@gmail.com
PostgreSQL version: 9.3.4
Operating system: Ubuntu 13.10
Description:
I have big database with geospatial data from OpenStreetMap. I prepare
vector tiles from this data using console app which requests data from
database for each tile in given area.
While it works it opens 1 db connection per thread (8 threads) and queries
all tiles from list 25k tiles in average. 5 queries per tile. During map
generation usually 2 threads stuck in idle state.
http://i.stack.imgur.com/VUU4O.png
Look at the last row. Query started. We have a timestamp, then it finished
and changed state to idle, and we have timestamp of that moment. Everything
looks ok, except console app which waits answer from server inside
PGresult *res = PQexec(conn, query);
It waits for query results from server. And I can't find why server thinks
that job is done and app says that there was no answer from db yet.
I added PQtrace for each thread and wait for stuck thread. There is trace:
>From backend> D
>From backend (#4)> 139891
>From backend> D
>From backend (#4)> 139891
>From backend> D
>From backend (#4)> 139891
>From backend> D
>From backend (#4)> 139891
>From backend> D
>From backend (#4)> 139891
>From backend> D
>From backend (#4)> 139891
Seems problem somewhere inside PostgreSQL. It tries to send result but
fails.
PostgreSQL 9.3.4-1.pgdg70+1 installed from apt source
deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main