Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Never-ending CONNECTION_CLOSED errors #921

Open
TimChinye opened this issue Jul 28, 2024 · 0 comments
Open

Never-ending CONNECTION_CLOSED errors #921

TimChinye opened this issue Jul 28, 2024 · 0 comments

Comments

@TimChinye
Copy link

TimChinye commented Jul 28, 2024

I'm putting this here since the docs state: This should not happen during normal operation, so please create an issue if this was unexpected.

So, my node projects makes about one database query call every 10 minutes, and every now and then, I get errors like these:
image

The error in text-form:

Error during getGlobalLeaderboards: Error: write CONNECTION_CLOSED <host>:<port>
    at TLSSocket.closed (/home/container/node_modules/postgres/cjs/src/connection.js:438:57)
    at TLSSocket.emit (node:events:529:35)
    at node:net:350:12
    at Socket.done (node:_tls_wrap:657:7)
    at Object.onceWrapper (node:events:632:26)
    at Socket.emit (node:events:517:28)
    at TCP.<anonymous> (node:net:350:12)
    at cachedError (/home/container/node_modules/postgres/cjs/src/query.js:170:23)
    at new Query (/home/container/node_modules/postgres/cjs/src/query.js:36:24)
    at sql (/home/container/node_modules/postgres/cjs/src/index.js:112:11)
    at getGlobalLeaderboards (/home/container/Discord Bots/resources/databases/Bomber Bot XP - DB.js:119:41) {
  code: 'CONNECTION_CLOSED',
  errno: 'CONNECTION_CLOSED',
  address: [
    '<host>'
  ],
  port: [ 5432 ]
}

The connection to my database is closing, how do I solve that from happening? Or is it possible to programmatically check if my connection is closed, and if so, re-open it, and run the query again?

Here's what my code looks like:

const postgres = require("postgres");

let { PGHOST, PGDATABASE, PGUSER, PGPASSWORD, ENDPOINT_ID } = process.env;

const sql = postgres({
    host: PGHOST,
    database: PGDATABASE,
    username: PGUSER,
    password: PGPASSWORD,
    port: 5432,
    ssl: "require",
    connection: {
        options: `project=${ENDPOINT_ID}`,
    },
    onnotice: false
});

const getBomber = async (id) => {
    try {
        if (!id) {
            console.log("Error during getBomber: No ID provided.");
            return;
        }
        return (await sql`SELECT * FROM bomber WHERE id = ${id}`)[0];
    } catch (error) {
        console.error('Error during getBomber:', error);
        return 'error';
    }
};

Also, I'm using a "pooler", could be apart of the issue -I don't really know the difference between a pool and client, iirc the pool is for many queries in one session or something? And since my bot is 24/7 it seemed appropiate, but I'm not fully sure.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant