Skip to content
Snippets Groups Projects
Commit 04e6364a authored by Stephen R. van den Berg's avatar Stephen R. van den Berg
Browse files

pgsql: Support spurious syncs in a stashed queue.

parent 2a077f79
No related branches found
No related tags found
No related merge requests found
...@@ -1327,7 +1327,7 @@ private int reconnect() { ...@@ -1327,7 +1327,7 @@ private int reconnect() {
catch(c->close()); catch(c->close());
unnamedstatement = 0; unnamedstatement = 0;
termlock = 0; termlock = 0;
destruct(c); catch(destruct(c));
PD("Flushing old cache\n"); PD("Flushing old cache\n");
foreach(_prepareds;;mapping tp) foreach(_prepareds;;mapping tp)
m_delete(tp,"preparedname"); m_delete(tp,"preparedname");
......
...@@ -189,16 +189,15 @@ class bufcon { ...@@ -189,16 +189,15 @@ class bufcon {
final void sendcmd(int mode,void|sql_result portal) { final void sendcmd(int mode,void|sql_result portal) {
Thread.MutexKey lock=realbuffer->shortmux->lock(); Thread.MutexKey lock=realbuffer->shortmux->lock();
if(portal) { if (portal)
realbuffer->stashqueue->write(portal); realbuffer->stashqueue->write(portal);
if (mode == SYNCSEND) { if (mode == SYNCSEND) {
add(PGSYNC); add(PGSYNC);
realbuffer->stashqueue->write(1); realbuffer->stashqueue->write(1);
mode = SENDOUT; // Demote it to prevent an extra SYNC upon stashflush mode = SENDOUT; // Demote it to prevent an extra SYNC upon stashflush
} }
}
realbuffer->stash->add(this); realbuffer->stash->add(this);
PD("%d>Got stash mode %d > %d\n", PD("%d>Stashed mode %d > %d\n",
realbuffer->socket->query_fd(), mode, realbuffer->stashflushmode); realbuffer->socket->query_fd(), mode, realbuffer->stashflushmode);
if (mode > realbuffer->stashflushmode) if (mode > realbuffer->stashflushmode)
realbuffer->stashflushmode = mode; realbuffer->stashflushmode = mode;
...@@ -387,7 +386,6 @@ outer: ...@@ -387,7 +386,6 @@ outer:
PD("%d>Skip flush %d Queue %O\n", PD("%d>Skip flush %d Queue %O\n",
socket->query_fd(), mode, (string)this); socket->query_fd(), mode, (string)this);
break outer; break outer;
case FLUSHLOGSEND:
case FLUSHSEND: case FLUSHSEND:
PD("Flush\n"); PD("Flush\n");
add(PGFLUSH); add(PGFLUSH);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment