22#ifdef NEOGRAPH_HAVE_GRPC
31#if __has_include(<grpcpp/impl/service_type.h>)
32#include <grpcpp/impl/service_type.h>
34#include <grpcpp/impl/codegen/service_type.h>
38#include <neograph/grpc/serve_options.h>
40namespace neograph::grpc {
58 explicit GrpcCheckpointStore(
const std::string& target);
61 GrpcCheckpointStore(
const std::string& target,
62 std::shared_ptr<sp::NativeArchive> native_archive);
63 ~GrpcCheckpointStore()
override;
67 void set_rpc_timeout(std::chrono::milliseconds timeout);
70 std::optional<neograph::graph::Checkpoint>
71 load_latest(
const std::string& thread_id)
override;
72 std::optional<neograph::graph::Checkpoint>
73 load_by_id(
const std::string&
id)
override;
74 std::vector<neograph::graph::Checkpoint>
75 list(
const std::string& thread_id,
int limit = 100)
override;
76 void delete_thread(
const std::string& thread_id)
override;
77 bool requires_managed_budget(
const std::string& thread_id)
override;
78 std::shared_ptr<neograph::graph::OwnedManagedBudgetLease> acquire_managed_budget_lease(
79 const neograph::graph::ManagedBudgetLeaseScope& scope,
80 const std::string& expected_checkpoint_id,
81 const std::string& expected_checkpoint_commitment)
override;
83 const std::shared_ptr<neograph::graph::OwnedManagedBudgetLease>& lease,
84 const std::string& effect_id, std::uint64_t exact_claim_amount,
85 const std::string& prepared_request_digest)
override;
86 void settle_managed_budget_effect(
87 const std::shared_ptr<neograph::graph::OwnedManagedBudgetLease>& lease,
89 sp::runtime::Result genuine_outcome,
90 const neograph::UsageAccumulator::AuthoritySnapshot& authority)
override;
91 void publish_managed_budget_checkpoint(
92 const std::shared_ptr<neograph::graph::OwnedManagedBudgetLease>& lease,
94 void release_managed_budget_lease(
95 const std::shared_ptr<neograph::graph::OwnedManagedBudgetLease>& lease)
override;
99 std::unique_ptr<Impl> impl_;
109NEOGRAPH_API
void run_checkpoint_server(
110 const std::string& address,
111 std::shared_ptr<neograph::graph::CheckpointStore> backend);
117NEOGRAPH_API std::unique_ptr<::grpc::Service> make_checkpoint_service(
118 std::shared_ptr<neograph::graph::CheckpointStore> backend,
119 std::shared_ptr<sp::NativeArchive> native_archive = {});
122NEOGRAPH_API
void run_checkpoint_server(
123 const std::string& address,
124 std::shared_ptr<neograph::graph::CheckpointStore> backend,
125 std::shared_ptr<sp::NativeArchive> native_archive);
129NEOGRAPH_API
void run_checkpoint_server(
130 const std::string& address,
131 std::shared_ptr<neograph::graph::CheckpointStore> backend,
132 std::shared_ptr<sp::NativeArchive> native_archive,
133 const ServeOptions& options);
140NEOGRAPH_API std::string checkpoint_to_json(
143 const std::string& s);
Checkpoint system for graph execution state persistence and time-travel.
Abstract interface for checkpoint persistence backends.
Actual write-ahead claim, bound to one original generation and owned actor.
Serialized snapshot of graph execution state at a single super-step.