Skip to content

Commit ae95f7e

Browse files
committed
Only give up on replica for last retry
1 parent bd7dfc6 commit ae95f7e

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

src/databases/Postgres.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ export class Postgres implements IDatabase {
103103

104104
let tries = 0;
105105
let lastPool: Pool = null;
106+
const maxTries = () => (lastPool === this.pool
107+
? this.config.postgres.maxTries : this.config.postgresReadOnly.maxTries);
106108
do {
107109
tries++;
108110

@@ -133,14 +135,13 @@ export class Postgres implements IDatabase {
133135
if (lastPool === this.pool) {
134136
// Only applies if it is get or all request
135137
options.forceReplica = true;
136-
} else if (lastPool === this.poolRead) {
138+
} else if (lastPool === this.poolRead && maxTries() - tries <= 1) {
137139
options.useReplica = false;
138140
}
139141

140142
Logger.error(`prepare (postgres) try ${tries}: ${err}`);
141143
}
142-
} while (this.isReadQuery(type) && tries < (lastPool === this.pool
143-
? this.config.postgres.maxTries : this.config.postgresReadOnly.maxTries));
144+
} while (this.isReadQuery(type) && tries < maxTries());
144145

145146
throw new Error(`prepare (postgres): ${type} ${query} failed after ${tries} tries`);
146147
}

0 commit comments

Comments
 (0)