'Mysterious timeout when connecting to neptune db

I'm getting this error message when trying to connect to a aws neptune db from a lambda:

2022-05-05T18:36:04.114Z    e0c9ee4c-0e1d-49c7-ad05-d8bab79d3ea6    WARN    Determining whether retriable error: Server error: {
    "requestId": "some value",
    "code": "TimeLimitExceededException",
    "detailedMessage": "A timeout occurred within the script or was otherwise cancelled directly during evaluation of [some value]"
} (598)

The timeout happens consistently after 20s.

It's not clear what's causing this. Things I've tried:

  • increasing the lambda memory in case it's just a hardware problem, but no luck
  • increasing neptune query timeout from 20s to 60s, but the request still times out at 20s.

This is the code of the lambda that tries to initialize the connection:

import { driver, structure } from 'gremlin';
import { getUrlAndHeaders } from 'gremlin-aws-sigv4/lib/utils';

const getConnectionDetails = () => {
    if (process.env['USE_IAM'] == 'true') {
        return getUrlAndHeaders(
            process.env['CLUSTER_ENDPOINT'],
            process.env['CLUSTER_PORT'],
            {},
            '/gremlin',
            'wss'
        );
    } else {
        const database_url =
            'wss://' +
            process.env['CLUSTER_ENDPOINT'] +
            ':' +
            process.env['CLUSTER_PORT'] +
            '/gremlin';
        return { url: database_url, headers: {} };
    }
};
const getConnection = () => {
    const { url, headers } = getConnectionDetails();

    const c = new driver.DriverRemoteConnection(url, {
        mimeType: 'application/vnd.gremlin-v2.0+json',
        headers: headers,
    });

    c._client._connection.on('close', (code, message) => {
        console.info(`close - ${code} ${message}`);
        if (code == 1006) {
            console.error('Connection closed prematurely');
            throw new Error('Connection closed prematurely');
        }
    });

    return c;
};

This was working previously using more powerful hardware (r4.2xlarge) for the neptune db, but I changed that t3.medium to minimize cost and it seems that's when the problem started. But I find it hard to believe that this hardware change alone would cause the connection to timeout, and it's odd that it continues to timeout at exactly 20s. Any ideas?



Solution 1:[1]

Once parameter group values are changed, the instance you are connecting to still needs to be restarted for them to take effect. You can do this:

  1. From the AWS Console (web page) for Neptune
  2. From the CLI using aws neptune reboot-db-instance

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kelvin Lawrence