0

I am using X DevAPI of MySql v8.0.33 using @mysql/xdevapi v8.0.33.

I have reconnect logic added but that is not working. Here is that code.

const mysqlx = require('@mysql/xdevapi')

async function createSession() {
  try {
    const session = await mysqlx.getSession({
      user: 'your_user',
      password: 'your_password',
      host: 'your_host',
      port: 33060, // default MySQL X Protocol port
    });

    // Handle connection close by reconnecting the session
    session['_client']['_stream'].on('close', () => {
      console.log('Connection closed. Reconnecting...');
      createSession(); // Re-establish the session
    });

    // Use the session for your database operations
    // ...

  } catch (error) {
    console.error('Error connecting to MySQL:', error);
  }
}

// Create the initial session
createSession();

I am getting error

TypeError: Cannot read properties of undefined (reading '_stream')

This error means that session['_client'] is undefined.

What is wrong with my reconnect logic?

1 Answer 1

1

As you mention, session['_client'] is not defined nor available. I guess you can get a socket reference with session.getConnection_().getClient().getConnection(), however this is an internal API and is prone to breaking changes without notice, so I would probably not recommend it. Instead, you can have some kind of decorator that wraps your workflows and creates a connection if one is not available.

Disclaimer: I'm the lead developer of the MySQL X DevAPI Connector for Node.js

Sign up to request clarification or add additional context in comments.

1 Comment

Thanks for this answer. What should be right way to use reconnect logic which I can sue in my express.js application?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.