Skip to content

Commit 10daeb3

Browse files
committed
Stop retaining a VSS runtime
Resolve the VSS schema through async setup on the caller runtime so VSS stores no longer create or retain a Tokio runtime. NodeBuilder preserves fail-fast setup while the VSS builder stays synchronous. Co-Authored-By: HAL 9000
1 parent cbc9728 commit 10daeb3

2 files changed

Lines changed: 110 additions & 88 deletions

File tree

src/builder.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -727,13 +727,18 @@ impl NodeBuilder {
727727
fixed_headers: HashMap<String, String>,
728728
) -> Result<Node, BuildError> {
729729
let logger = setup_logger(&self.log_writer_config, &self.config)?;
730+
let runtime = self.setup_runtime(&logger)?;
730731
let builder = VssStoreBuilder::new(node_entropy, vss_url, store_id, self.config.network);
731732
let vss_store = builder.build_with_sigs_auth(fixed_headers).map_err(|e| {
732733
log_error!(logger, "Failed to setup VSS store: {}", e);
733734
BuildError::KVStoreSetupFailed
734735
})?;
736+
runtime.block_on(vss_store.setup_schema_version()).map_err(|e| {
737+
log_error!(logger, "Failed to setup VSS store: {}", e);
738+
BuildError::KVStoreSetupFailed
739+
})?;
735740

736-
self.build_with_store_and_logger(node_entropy, vss_store, logger)
741+
self.build_with_store_runtime_and_logger(node_entropy, vss_store, runtime, logger)
737742
}
738743

739744
/// Builds a [`Node`] instance with a [VSS] backend and according to the options
@@ -763,14 +768,19 @@ impl NodeBuilder {
763768
lnurl_auth_server_url: String, fixed_headers: HashMap<String, String>,
764769
) -> Result<Node, BuildError> {
765770
let logger = setup_logger(&self.log_writer_config, &self.config)?;
771+
let runtime = self.setup_runtime(&logger)?;
766772
let builder = VssStoreBuilder::new(node_entropy, vss_url, store_id, self.config.network);
767773
let vss_store =
768774
builder.build_with_lnurl(lnurl_auth_server_url, fixed_headers).map_err(|e| {
769775
log_error!(logger, "Failed to setup VSS store: {}", e);
770776
BuildError::KVStoreSetupFailed
771777
})?;
778+
runtime.block_on(vss_store.setup_schema_version()).map_err(|e| {
779+
log_error!(logger, "Failed to setup VSS store: {}", e);
780+
BuildError::KVStoreSetupFailed
781+
})?;
772782

773-
self.build_with_store_and_logger(node_entropy, vss_store, logger)
783+
self.build_with_store_runtime_and_logger(node_entropy, vss_store, runtime, logger)
774784
}
775785

776786
/// Builds a [`Node`] instance with a [VSS] backend and according to the options
@@ -791,13 +801,18 @@ impl NodeBuilder {
791801
fixed_headers: HashMap<String, String>,
792802
) -> Result<Node, BuildError> {
793803
let logger = setup_logger(&self.log_writer_config, &self.config)?;
804+
let runtime = self.setup_runtime(&logger)?;
794805
let builder = VssStoreBuilder::new(node_entropy, vss_url, store_id, self.config.network);
795806
let vss_store = builder.build_with_fixed_headers(fixed_headers).map_err(|e| {
796807
log_error!(logger, "Failed to setup VSS store: {}", e);
797808
BuildError::KVStoreSetupFailed
798809
})?;
810+
runtime.block_on(vss_store.setup_schema_version()).map_err(|e| {
811+
log_error!(logger, "Failed to setup VSS store: {}", e);
812+
BuildError::KVStoreSetupFailed
813+
})?;
799814

800-
self.build_with_store_and_logger(node_entropy, vss_store, logger)
815+
self.build_with_store_runtime_and_logger(node_entropy, vss_store, runtime, logger)
801816
}
802817

803818
/// Builds a [`Node`] instance with a [VSS] backend and according to the options
@@ -816,13 +831,18 @@ impl NodeBuilder {
816831
header_provider: Arc<dyn VssHeaderProvider>,
817832
) -> Result<Node, BuildError> {
818833
let logger = setup_logger(&self.log_writer_config, &self.config)?;
834+
let runtime = self.setup_runtime(&logger)?;
819835
let builder = VssStoreBuilder::new(node_entropy, vss_url, store_id, self.config.network);
820836
let vss_store = builder.build_with_header_provider(header_provider).map_err(|e| {
821837
log_error!(logger, "Failed to setup VSS store: {}", e);
822838
BuildError::KVStoreSetupFailed
823839
})?;
840+
runtime.block_on(vss_store.setup_schema_version()).map_err(|e| {
841+
log_error!(logger, "Failed to setup VSS store: {}", e);
842+
BuildError::KVStoreSetupFailed
843+
})?;
824844

825-
self.build_with_store_and_logger(node_entropy, vss_store, logger)
845+
self.build_with_store_runtime_and_logger(node_entropy, vss_store, runtime, logger)
826846
}
827847

828848
/// Builds a [`Node`] instance according to the options previously configured.

0 commit comments

Comments
 (0)