2016-02-27
2016-02-27 02:54:59 by Stephen R. van den Berg <srb@cuci.nl>
-
fa4c4708b9eb8b90a68383a66ce2df5d845ef4da
(14 lines)
(+8/-6)
[
Show
| Annotate
]
Branch: 8.0
pgsql: Sharpen and weed termination mutexes.
316:
.pgsql_util.conxion lcon=getsocket(1);
lcon->add_int32(16)->add_int32(PG_PROTOCOL(1234,5678))
->add_int32(backendpid)->add(cancelsecret)->sendcmd(FLUSHSEND);
- lcon->close();
+ lcon=0;
#ifdef PG_DEBUGMORE
PD("Closetrace %O\n",backtrace());
#endif
598:
#endif
final void _processloop(.pgsql_util.conxion ci) {
- if(c && (!ci || c!=ci)) // If we are switching or dropping connections
- c->close(); // force a close on the old socket
+
(c=ci)->socket->set_id(procmessage);
cancelsecret=0;
portal=0;
1185:
#endif
portal->_purgeportal();
}
- if(!ci->close() && !terminating && _options.reconnect)
+ c=ci=0;
+ if(!terminating && _options.reconnect)
_connectfail();
else
destruct(waitforauthready);
1203:
/*semi*/final void close() {
if(qportals && qportals->size())
catch(cancelquery());
+ termlock=(termthread=Thread.Mutex())->lock();
c->close();
-
+ termthread->lock(1);
c=0;
destruct(waitforauthready);
}
protected void destroy() {
- termlock=(termthread=Thread.Mutex())->lock();
+
catch(close());
.pgsql_util.unregister_backend();
- termthread->lock(1);
+
}
final void _connectfail(void|mixed err) {
1261: Inside #if defined(PG_STATS)
#ifdef PG_STATS
prepstmtused=0;
#endif
+ termlock=(termthread=Thread.Mutex())->lock();
c->close();
-
+ termthread->lock(1);
c=0;
PD("Flushing old cache\n");
foreach(_prepareds;;mapping tp)