From c4e376ece538d2b0c4847281ac07af7e885d21f0 Mon Sep 17 00:00:00 2001 From: Martin Sumner Date: Tue, 10 Jul 2018 10:25:20 +0100 Subject: [PATCH] Don't link snapshots If a snapshot breaks a penciller clone, this shouldn't crash the main process. --- src/leveled_bookie.erl | 4 ++-- src/leveled_inker.erl | 7 +++++++ src/leveled_penciller.erl | 7 +++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/leveled_bookie.erl b/src/leveled_bookie.erl index 66fa043..a12d29e 100644 --- a/src/leveled_bookie.erl +++ b/src/leveled_bookie.erl @@ -916,12 +916,12 @@ snapshot_store(LedgerCache, Penciller, Inker, SnapType, Query, LongRunning) -> snapshot_query = Query, snapshot_longrunning = LongRunning, bookies_mem = BookiesMem}, - {ok, LedgerSnapshot} = leveled_penciller:pcl_start(PCLopts), + {ok, LedgerSnapshot} = leveled_penciller:pcl_snapstart(PCLopts), case SnapType of store -> InkerOpts = #inker_options{start_snapshot=true, source_inker=Inker}, - {ok, JournalSnapshot} = leveled_inker:ink_start(InkerOpts), + {ok, JournalSnapshot} = leveled_inker:ink_snapstart(InkerOpts), {ok, LedgerSnapshot, JournalSnapshot}; ledger -> {ok, LedgerSnapshot, null} diff --git a/src/leveled_inker.erl b/src/leveled_inker.erl index fe7d9bf..447d739 100644 --- a/src/leveled_inker.erl +++ b/src/leveled_inker.erl @@ -94,6 +94,7 @@ terminate/2, code_change/3, ink_start/1, + ink_snapstart/1, ink_put/4, ink_mput/3, ink_get/3, @@ -171,6 +172,12 @@ ink_start(InkerOpts) -> gen_server:start_link(?MODULE, [InkerOpts], []). +-spec ink_snapstart(inker_options()) -> {ok, pid()}. +%% @doc +%% Don't link on startup as snapshot +ink_snapstart(InkerOpts) -> + gen_server:start(?MODULE, [InkerOpts], []). + -spec ink_put(pid(), leveled_codec:ledger_key(), any(), diff --git a/src/leveled_penciller.erl b/src/leveled_penciller.erl index cda86ca..ca0a5b6 100644 --- a/src/leveled_penciller.erl +++ b/src/leveled_penciller.erl @@ -170,6 +170,7 @@ code_change/3]). -export([ + pcl_snapstart/1, pcl_start/1, pcl_pushmem/2, pcl_fetchlevelzero/2, @@ -310,6 +311,12 @@ pcl_start(PCLopts) -> gen_server:start_link(?MODULE, [PCLopts], []). +-spec pcl_snapstart(penciller_options()) -> {ok, pid()}. +%% @doc +%% Don't link to the bookie - this is a snpashot +pcl_snapstart(PCLopts) -> + gen_server:start(?MODULE, [PCLopts], []). + -spec pcl_pushmem(pid(), bookies_memory()) -> ok|returned. %% @doc %% Load the contents of the Bookie's memory of recent additions to the Ledger