26.6.2.4 Error Handling when Using a ChangeSet
Error handling while populating a ChangeSet or while applying a
ChangeSet to the existing graph can be configured by setting the
InvalidChangePolicy. The options are:
OnInvalidChange.ERROR: throws an exception (This is the default configuration)OnInvalidChange.IGNORE: ignores the issue and continuesOnInvalidChange.IGNORE_AND_LOG: ignores the issue, logs inDEBUGlog level and continuesOnInvalidChange.IGNORE_AND_LOG_ONCE: only logs the first occurrence of each issue type
Issues that can be ignored with InvalidChangePolicy include trying to
remove a vertex or an edge that does not exist in the graph, property type mismatch,
updates to non existing properties, providing a vertex ID with wrong type or invalid
vertex or edge providers.
The following example, tries to remove vertex 9032 which does not exist
in the graph. By configuring IGNORE_AND_LOG, this action will be
ignored while the property value update for vertex 99 will be applied
successfully.
opg4j> var changeSet3 = updatedGraph2.<Integer>createChangeSet()
opg4j> changeSet3.setInvalidChangePolicy(OnInvalidChange.IGNORE_AND_LOG)
opg4j> changeSet3.removeVertex(9032)
opg4j> changeSet3.updateVertex(99).setProperty("prop1", 17)
opg4j> var updatedGraph3 = changeSet3.build() // will log that a vertex removal was ignored
opg4j> var prop1Val = updatedGraph3.getVertex(99).getProperty("prop1") // evaluates to 17import oracle.pgx.api.*;
GraphChangeSet<Integer> changeSet3 = graph.createChangeSet();
changeSet3.setInvalidChangePolicy(OnInvalidChange.IGNORE_AND_LOG);
changeSet3.removeVertex(9032);
changeSet3.updateVertex(99).setProperty("prop1", 17);
PgxGraph updatedGraph3 = changeSet3.build(); // will log that a vertex removal was ignored
int prop1Val = updatedGraph3.getVertex(99).getProperty("prop1"); // evaluates to 17Note:
When connecting to a remote graph server (PGX), error handling log messages will not be relayed to the client. In such a case, you need access to the server logs to determine which issues have been ignored. For this, you must update the default Logback configuration file in/etc/oracle/graph/logback.xml and the graph server (PGX) logger
configuration file in /etc/oracle/graph/logback-server.xml to log
the DEBUG logs. You can then view the ignored issues in
/var/opt/log/pgx-server.log file.
Add Existing Edges and Vertices
The error handling for adding a vertex or an edge where its ID is already used in the
graph or in an incompatible ChangeSet action can be configured with
AddExistingVertexPolicy and
AddExistingEdgePolicy.
Note:
The default setting forAddExistingVertexPolicy and
AddExistingEdgePolicy is IGNORE. This is
different from InvalidChangePolicy where the default is
ERROR.
Parent topic: Modifying Loaded Graphs Using ChangeSet