@@ -6,7 +6,7 @@ use std::{
66
77use anyhow:: Context ;
88use miden_node_proto:: generated:: store:: api_server;
9- use miden_node_utils:: { errors :: ApiError , tracing:: grpc:: store_trace_fn} ;
9+ use miden_node_utils:: tracing:: grpc:: store_trace_fn;
1010use tokio:: net:: TcpListener ;
1111use tokio_stream:: wrappers:: TcpListenerStream ;
1212use tower_http:: trace:: TraceLayer ;
@@ -70,22 +70,19 @@ impl Store {
7070 }
7171
7272 /// Performs initialization tasks required before [`serve`](Self::serve) can be called.
73- pub async fn init ( listener : TcpListener , data_directory : PathBuf ) -> Result < Self , ApiError > {
73+ pub async fn init ( listener : TcpListener , data_directory : PathBuf ) -> anyhow :: Result < Self > {
7474 info ! ( target: COMPONENT , endpoint=?listener, ?data_directory, "Loading database" ) ;
7575
7676 let data_directory = DataDirectory :: load ( data_directory) ?;
7777
7878 let block_store = Arc :: new ( BlockStore :: load ( data_directory. block_store_dir ( ) ) ?) ;
7979
80- let db = Db :: load ( data_directory. database_path ( ) )
81- . await
82- . map_err ( |err| ApiError :: ApiInitialisationFailed ( err. to_string ( ) ) ) ?;
80+ let database_filepath = data_directory. database_path ( ) ;
81+ let db = Db :: load ( database_filepath. clone ( ) ) . await . with_context ( || {
82+ format ! ( "failed to load database at {}" , database_filepath. display( ) )
83+ } ) ?;
8384
84- let state = Arc :: new (
85- State :: load ( db, block_store)
86- . await
87- . map_err ( |err| ApiError :: DatabaseConnectionFailed ( err. to_string ( ) ) ) ?,
88- ) ;
85+ let state = Arc :: new ( State :: load ( db, block_store) . await . context ( "failed to load state" ) ?) ;
8986
9087 let db_maintenance_service =
9188 DbMaintenance :: new ( Arc :: clone ( & state) , DATABASE_MAINTENANCE_INTERVAL ) ;
@@ -103,15 +100,15 @@ impl Store {
103100 /// Serves the store's RPC API and DB maintenance background task.
104101 ///
105102 /// Note: this blocks until the server dies.
106- pub async fn serve ( self ) -> Result < ( ) , ApiError > {
103+ pub async fn serve ( self ) -> anyhow :: Result < ( ) > {
107104 tokio:: spawn ( self . db_maintenance_service . run ( ) ) ;
108105 // Build the gRPC server with the API service and trace layer.
109106 tonic:: transport:: Server :: builder ( )
110107 . layer ( TraceLayer :: new_for_grpc ( ) . make_span_with ( store_trace_fn) )
111108 . add_service ( self . api_service )
112109 . serve_with_incoming ( TcpListenerStream :: new ( self . listener ) )
113110 . await
114- . map_err ( ApiError :: ApiServeFailed )
111+ . context ( "failed to serve store API" )
115112 }
116113}
117114
0 commit comments