Skip to content
Graph docs0.5

Operations

Latest stable Based on Graph release 0.5.1

Define service-level evidence around the actual boundary:

  • driver/data-source pool utilization, acquisition latency, and failures;
  • query latency/error rate by operation and backend error code;
  • transaction commit, rollback, retry, timeout, and cancellation counts;
  • batch/import throughput, partial counts, buffered edges, and rejected records;
  • schema/index inventory and query-plan regressions;
  • Ktor/Spring startup and shutdown ownership events.

GraphSession explicitly leaves injected resource ownership outside close(): GraphSession.kt. Framework pages explain when a container registers close actions.

For incidents, preserve the backend query/error, operation parameters with secrets removed, transaction state, graph-io report, server/container version, and cancellation signal. Compare observed counts before retrying a non-idempotent batch. Use merge only when its key semantics are tested for the selected backend.

Backups and restore are backend responsibilities. Validate restored schema, counts, representative paths, and external-ID mapping with application-level checks rather than trusting file completion alone.

val before = ops.countVertices("Person")
val start = System.nanoTime()
val path = ops.shortestPath(sourceId, targetId, PathOptions(edgeLabel = "KNOWS", maxDepth = 6))
println("shortestPath.elapsedNanos=${System.nanoTime() - start}, found=${path != null}")
check(ops.countVertices("Person") == before)

Run this after startup and restore; expected observations are stable counts, bounded latency, and either a valid path or an explicit no-path result. During a drill, stop the backend or exhaust the pool, then confirm the application reports acquisition/query failure without committing later writes. Diagnose pool acquisition first, server health second, query plan/schema third, and domain data last. Record the exact backend version and ownership path used during shutdown.