Skip to content

Commit 5dd0c57

Browse files
committed
fixed a minor bug in the connection pool: we should resume the "name", "sockaddr", and "socklen" fields for the connection from the pool such that we can get more detailed error log messages with the "upstream: postgres://ip.add.re.ss:port" bit.
1 parent c605b58 commit 5dd0c57

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/ngx_postgres_keepalive.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,17 @@ ngx_postgres_keepalive_get_peer_single(ngx_peer_connection_t *pc,
8585
c->read->log = pc->log;
8686
c->write->log = pc->log;
8787

88-
pc->connection = c;
89-
pc->cached = 1;
90-
9188
pgp->name = &item->name;
9289
pgp->pgconn = item->pgconn;
9390

91+
pc->connection = c;
92+
pc->cached = 1;
93+
pc->name = pgp->name;
94+
pc->sockaddr = &item->sockaddr;
95+
pc->socklen = item->socklen;
96+
9497
dd("returning NGX_DONE");
98+
9599
return NGX_DONE;
96100
}
97101

@@ -186,6 +190,7 @@ ngx_postgres_keepalive_free_peer(ngx_peer_connection_t *pc,
186190

187191
ngx_postgres_upstream_free_connection(pc->log, item->connection,
188192
item->pgconn, pgscf);
193+
189194
} else {
190195
q = ngx_queue_head(&pgscf->free);
191196
ngx_queue_remove(q);
@@ -216,10 +221,13 @@ ngx_postgres_keepalive_free_peer(ngx_peer_connection_t *pc,
216221
c->read->log = ngx_cycle->log;
217222
c->write->log = ngx_cycle->log;
218223

219-
item->socklen = pc->socklen;
220-
ngx_memcpy(&item->sockaddr, pc->sockaddr, pc->socklen);
224+
if (pc->sockaddr != &item->sockaddr) {
225+
item->socklen = pc->socklen;
226+
ngx_memcpy(&item->sockaddr, pc->sockaddr, pc->socklen);
227+
}
221228

222229
item->pgconn = pgp->pgconn;
230+
item->name = *pgp->name;
223231
}
224232

225233
dd("returning");

src/ngx_postgres_keepalive.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ typedef struct {
4141
ngx_postgres_upstream_srv_conf_t *srv_conf;
4242
ngx_connection_t *connection;
4343
PGconn *pgconn;
44-
struct sockaddr_storage sockaddr;
44+
struct sockaddr sockaddr;
4545
socklen_t socklen;
4646
ngx_str_t name;
4747
} ngx_postgres_keepalive_cache_t;

0 commit comments

Comments
 (0)