Amazon Neptune Engine Version (2023-06-13) - Amazon Neptune
Services or capabilities described in Amazon Web Services documentation might vary by Region. To see the differences applicable to the China Regions, see Getting Started with Amazon Web Services in China (PDF).

Amazon Neptune Engine Version (2023-06-13)

As of 2023-06-13, engine version is being generally deployed. Please note that it takes several days for a new release to become available in every region.


Changes introduced in this engine release may in some cases cause you to observe degraded bulk load performance. As a result, upgrades to this release have been temporarily suspended until the problem has been resolved.


If upgrading from an engine version earlier than

  • Engine release introduced a new format for custom parameter groups and custom cluster parameter groups. As a result, if you are upgrading from an engine version earlier than to engine version or above, you must re-create all your existing custom parameter groups and custom cluster parameter groups using parameter group family neptune1.2. Earlier releases used parameter group family neptune1, and those parameter groups won't work with release and above. See Amazon Neptune parameter groups for more information.

  • Engine release also introduced a new format for undo logs. As a result, any undo logs created by an earlier engine version must be purged and the UndoLogsListSize CloudWatch metric must fall to zero before any upgrade from a version earlier than can get started. If there are too many undo log records (200,000 or more) when you try to start an update, the upgrade attempt can time out while waiting for purging of the undo logs to complete.

    You can speed up the purge rate by upgrading the cluster's writer instance, which is where the purging occurs. Doing that before trying to upgrade can bring down the number of undo logs before you start. Increasing the size of the writer to a 24XL instance type can increase your purge rate to more than a million records per hour.

    If the UndoLogsListSize CloudWatch metric is extremely large, opening a support case may help you explore additional strategies for bringing it down.

  • Finally, there was a breaking change in release affecting earlier code that used the Bolt protocol with IAM authentication. Starting with release, Bolt needs a resource path for IAM signing. In Java, setting the resource path might look like this: request.setResourcePath("/openCypher"));. In other languages, the /openCypher can be appended to the endpoint URI. See Using the Bolt protocol for examples.

New Features in This Engine Release

Improvements in This Engine Release

  • Improved Gremlin's fail() step to differentiate the exception it produced from a generic InternalFailureException and to ensure that any user-supplied message provided to it was propagated back to the caller.

  • Improved Gremlin query engine optimizations for store, aggregate, cap, limit, and hasLabel.

  • Added support for openCypher trignometric functions:

    • acos()

    • asin()

    • atan()

    • atan2()

    • cos()

    • cot()

    • degrees()

    • pi()

    • radians()

    • sin()

    • tan()

  • Added support for several openCypher aggregating functions:

    • percentileDisc()

    • stDev()

  • Added support for openCypher epochmillis() function that converts a datetime to epochmillis. For example:

    MATCH (n) RETURN epochMillis(n.someDateTime) 1698972364782
  • Added support for openCypher modulo (%) operator.

  • Added support for the openCypher Static Debug Explain tool.

  • Added support for the openCypher randomUUID() function.

  • Improved openCypher performance:

    • Improved the parser and query planner.

    • Improved CPU utilization in the DFE engine.

    • Improved the performance of queries containing multiple update clauses that reuse the same variables. Examples are:

      MERGE (n {name: 'John'}) or MERGE (m {name: 'Jim'}) or MERGE (n)-[:knows {since: 2023}]→(m)
    • Optimized query plans for multi-hop query patterns such as:

      MATCH (n)-->()-->()-->(m) RETURN n m
    • Improved the performance of list and map injection through parameterized queries. For example:

      UNWIND $idList as id MATCH (n {`~id`: id}) RETURN
    • Improved query execution containing WITH by making it an appropriate barrier.

    • Optimized to avoid redundant materialization of values in Unfold and aggregation functions.

  • Improved the performance of SPARQL queries that contain a large number of static inputs in the VALUES clause, such as:

    SELECT ?n WHERE { VALUES (?name) { ("John") ("Jim") ... many values ... } ?n a ?n_type . ?n ?name . }
  • Improved SPARQL CBD query performance.

Defects Fixed in This Engine Release

  • Fixed a Gremlin bug where long queries with deep nesting were causing high CPU usage and query timeouts during the query planning phase.

  • Fixed a Gremlin bug where an invalid NullPointerException could be thrown when using mergeV or mergeE.

Query-Language Versions Supported in This Release

Before upgrading a DB cluster to version, make sure that your project is compatible with these query-language versions:

  • Gremlin earliest version supported: 3.6.2

  • Gremlin latest version supported: 3.6.2

  • openCypher version: Neptune-9.0.20190305-1.0

  • SPARQL version: 1.1

Upgrade Paths to Engine Release

Upgrading to This Release

Amazon Neptune is now generally available.

If a DB cluster is running an engine version from which there is an upgrade path to this release, it is eligible to be upgraded now. You can upgrade any eligible cluster using the DB cluster operations on the console or by using the SDK. The following CLI command will upgrade an eligible cluster immediately:

For Linux, OS X, or Unix:

aws neptune modify-db-cluster \ --db-cluster-identifier (your-neptune-cluster) \ --engine-version \ --apply-immediately

For Windows:

aws neptune modify-db-cluster ^ --db-cluster-identifier (your-neptune-cluster) ^ --engine-version ^ --apply-immediately

Updates are applied to all instances in a DB cluster simultaneously. An update requires a database restart on those instances, so you will experience downtime ranging from 20–30 seconds to several minutes, after which you can resume using the DB cluster.

Always test before you upgrade

When a new major or minor Neptune engine version is released, always test your Neptune applications on it first before upgrading to it. Even a minor upgrade could introduce new features or behavior that would affect your code.

Start by comparing the release notes pages from your current version to those of the targeted version to see if there will be changes in query language versions or other breaking changes.

The best way to test a new version before upgrading your production DB cluster is to clone your production cluster so that the clone is running the new engine version. You can then run queries on the clone without affecting the production DB cluster.

Always create a manual snapshot before you upgrade

Before performing an upgrade, we strongly recommend that you always create a manual snapshot of your DB cluster. Having an automatic snapshot only offers short-term protection, whereas a manual snapshot remains available until you explicitly delete it.

In certain cases Neptune creates a manual snapshot for you as a part of the upgrade process, but you should not rely on this, and should create your own manual snapshot in any case.

When you are certain that you won't need to revert your DB cluster to its pre-upgrade state, you can explicitly delete the manual snapshot that you created yourself, as well as the manual snapshot that Neptune might have created. If Neptune creates a manual snapshot, it will have a name that begins with preupgrade, followed by the name of your DB cluster, the source engine version, the target engine version, and the date.


If you are trying to upgrade while a pending action is in process, you may encounter an error such as the following:

We're sorry, your request to modify DB cluster (cluster identifier) has failed. Cannot modify engine version because instance (instance identifier) is running on an old configuration. Apply any pending maintenance actions on the instance before proceeding with the upgrade.

If you encounter this error, wait for the pending action to finish, or trigger a maintenance window immediately to let the previous upgrade complete.

For more information about upgrading your engine version, see Maintaining your Amazon Neptune DB Cluster. If you have any questions or concerns, the Amazon Support team is available on the community forums and through Amazon Premium Support.