postgresql locks up over the net - Mailing list pgsql-bugs

From Peter T. Breuer
Subject postgresql locks up over the net
Date
Msg-id 200705142231.l4EMV1l22869@inv.it.uc3m.es
Whole thread Raw
Responses Re: postgresql locks up over the net  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
When talking across a net connection, the 8.1.8-1 client eventually hangs
waiting for a reply to a query that the 7.4.7-6 server misses:

CLIENT:

1) send(3, "Q\0\0\0009SELECT key FROM records WHE"..., 58, 0) = 58
   rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
   poll([{fd=3, events=POLLIN|POLLERR, revents=POLLIN}], 1, -1) = 1
2) recv(3, "T\0\0\0\34\0\1key\0\0\1\22e\0\1\0\0\0\27\0\4\377\377\377"..., 16384, 0) = 65
   rt_sigprocmask(SIG_BLOCK, [PIPE], [], 8) = 0
3) send(3, "Q\0\0\1\232UPDATE records SET magic = "..., 411, 0) = 411
   rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
   poll([{fd=3, events=POLLIN|POLLERR, revents=POLLIN}], 1, -1) = 1
4) recv(3, "C\0\0\0\rUPDATE 1\0Z\0\0\0\5I", 16384, 0) = 20
   rt_sigprocmask(SIG_BLOCK, [PIPE], [], 8) = 0
5) send(3, "Q\0\0\0008SELECT name from names WHER"..., 57, 0) = 57
   rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
   poll(    ....STUCK...


SERVER:

1) recv(8, "Q\0\0\0009SELECT key FROM records WHE"..., 8192, 0) = 58
   gettimeofday({1179180003, 769584}, NULL) = 0
   send(5, "\4\0\0\0\254\0\0\0\2\0\0\0\215V\0\0\276I\0\0d\0\0\0\2\0"..., 172, 0) =   172
2) send(8, "T\0\0\0\34\0\1key\0\0\1\22e\0\1\0\0\0\27\0\4\377\377\377"..., 65, 0) =   65
3) recv(8, "Q\0\0\1\232UPDATE records SET magic = "..., 8192, 0) = 411
   gettimeofday({1179180003, 839197}, NULL) = 0
   time(NULL)                              = 1179180003
   _llseek(42, 8142848, [8142848], SEEK_SET) = 0
   write(42, "Z\320\1\0\22\0\0\0\0\0\0\0\0@|\2\234\0\0\0\315\253\315"..., 8192) = 8  192
   fdatasync(0x2a)                         = 0
   send(5, "\4\0\0\0\254\0\0\0\2\0\0\0\215V\0\0\276I\0\0d\0\0\0\2\0"..., 172, 0) =   172
4) send(8, "C\0\0\0\rUPDATE 1\0Z\0\0\0\5I", 20, 0) = 20
   recv(8, ... STUCK...



The server never received the client's send (5) on client channel 3,
server channel 8. It's waiting for a communication that it missed.

This works fine to localhost (i.e. 8.1 to 8.1). How can the server miss
a send from a client?  What received the send from the client? The
client thinks it went out!  Surely this is tcp?  Apparently not!  Is
there some way of saying to use tcp?  I suppose insisting on ssl would
do.


Peter

pgsql-bugs by date:

Previous
From: Stefan Kaltenbrunner
Date:
Subject: Re: BUG #3279: insert or update
Next
From: Alvaro Herrera
Date:
Subject: Re: Removing pg_auth_members.grantor (was Grantor name gets lost when grantor role dropped)