diff --git a/manifest/main.ml b/manifest/main.ml index 78cac9b5e3e7b07169e2ee833681b3fafe371a12..60de38c4b2005159a4eb441fc800700f2198b592 100644 --- a/manifest/main.ml +++ b/manifest/main.ml @@ -2210,6 +2210,7 @@ let tezos_proxy_rpc = tezos_mockup_proxy; tezos_rpc; tezos_proxy; + lwt_unix; ] let _tezos_proxy_tests = @@ -3173,6 +3174,7 @@ let _tezos_proxy_server = tezos_stdlib_unix |> open_; cmdliner; lwt_exit; + lwt_unix; tezos_proxy; tezos_proxy_server_config; tezos_rpc_http_client_unix; diff --git a/src/bin_proxy_server/dune b/src/bin_proxy_server/dune index 3718b93e0d9ca7fe6c1eb7fe127441cc3fecd4c3..54cd6d74f9fe7346418e57a47a3f11b7d199926f 100644 --- a/src/bin_proxy_server/dune +++ b/src/bin_proxy_server/dune @@ -14,6 +14,7 @@ tezos-stdlib-unix cmdliner lwt-exit + lwt.unix tezos-proxy tezos-proxy-server-config tezos-rpc-http-client-unix diff --git a/src/bin_proxy_server/main_proxy_server.ml b/src/bin_proxy_server/main_proxy_server.ml index cc472be301f3c9f81cc2cbf20c868b1011d93619..69f6fd72ca4946bb6929cc0738ae448d307b3de4 100644 --- a/src/bin_proxy_server/main_proxy_server.ml +++ b/src/bin_proxy_server/main_proxy_server.ml @@ -153,6 +153,7 @@ let main_promise (config_file : string option) in let dir = Tezos_proxy.Proxy_services.build_directory + ~sleep:Lwt_unix.sleep printer http_ctxt (Tezos_proxy.Proxy_services.Proxy_server sym_block_caching_time) diff --git a/src/bin_proxy_server/tezos-proxy-server.opam b/src/bin_proxy_server/tezos-proxy-server.opam index f3b895f7ad0babe14a3effde474d46307ffd0f98..eb5b5ba6ec209db7af23887153ae990a459c90fa 100644 --- a/src/bin_proxy_server/tezos-proxy-server.opam +++ b/src/bin_proxy_server/tezos-proxy-server.opam @@ -13,6 +13,7 @@ depends: [ "tezos-stdlib-unix" "cmdliner" "lwt-exit" + "lwt" { >= "5.4.0" } "tezos-proxy" "tezos-proxy-server-config" "tezos-rpc-http-client-unix" diff --git a/src/lib_proxy/proxy_services.ml b/src/lib_proxy/proxy_services.ml index 82c43a994954ad0b67b1c407dace3d01c5864cb4..5e9779d65332b08b27bcea1179766fe1c8c7e8ac 100644 --- a/src/lib_proxy/proxy_services.ml +++ b/src/lib_proxy/proxy_services.ml @@ -162,7 +162,8 @@ module Env_cache = module Env_cache_lwt = Ringo_lwt.Functors.Make_result (Env_cache) -let schedule_clearing (printer : Tezos_client_base.Client_context.printer) +let schedule_clearing ~(sleep : float -> unit Lwt.t) + (printer : Tezos_client_base.Client_context.printer) (rpc_context : RPC_context.generic) (proxy_env : Registration.proxy_environment) (mode : mode) envs_cache key chain block = @@ -209,7 +210,7 @@ let schedule_clearing (printer : Tezos_client_base.Client_context.printer) | Ok (Some x) -> Lwt.return (Int64.to_float x)) in let schedule () : _ Lwt.t = - let* () = Lwt_unix.sleep time_between_blocks in + let* () = sleep time_between_blocks in Env_cache_lwt.remove envs_cache key ; Events.(emit clearing_data (chain_string, block_string)) in @@ -249,7 +250,8 @@ let protocols protocol_hash = next_protocol = protocol_hash; })) -let build_directory (printer : Tezos_client_base.Client_context.printer) +let build_directory ~(sleep : float -> unit Lwt.t) + (printer : Tezos_client_base.Client_context.printer) (rpc_context : RPC_context.generic) (mode : mode) (proxy_env : Registration.proxy_environment) : unit RPC_directory.t = let (module Proxy_environment) = proxy_env in @@ -314,6 +316,7 @@ let build_directory (printer : Tezos_client_base.Client_context.printer) fill_b2h @@ initial_context.block_hash ; let*! () = schedule_clearing + ~sleep printer rpc_context proxy_env diff --git a/src/lib_proxy/proxy_services.mli b/src/lib_proxy/proxy_services.mli index e2b6bcb4512a4588efcb164f7680540ba738e359..dda2d0c9527bcae980df31b6cdfa755b47305080 100644 --- a/src/lib_proxy/proxy_services.mli +++ b/src/lib_proxy/proxy_services.mli @@ -52,6 +52,7 @@ type mode = or [tezos-proxy-server] is running. - [env] is a protocol-specific module used to create the context passed when executing a RPC. *) val build_directory : + sleep:(float -> unit Lwt.t) -> Tezos_client_base.Client_context.printer -> RPC_context.generic -> mode -> diff --git a/src/lib_proxy/rpc/RPC_client.ml b/src/lib_proxy/rpc/RPC_client.ml index 901f452db9ec74bb65dbdcc81b49e0c15961c95d..b5f6058b29ba8f2efd39311e0b503de7b91ff455 100644 --- a/src/lib_proxy/rpc/RPC_client.ml +++ b/src/lib_proxy/rpc/RPC_client.ml @@ -56,7 +56,12 @@ class http_local_ctxt (printer : Tezos_client_base.Client_context.printer) (proxy_env : Registration.proxy_environment) : RPC_context.generic = let local_ctxt = Tezos_mockup_proxy.RPC_client.local_ctxt - (Proxy_services.build_directory printer http_ctxt mode proxy_env) + (Proxy_services.build_directory + ~sleep:Lwt_unix.sleep + printer + http_ctxt + mode + proxy_env) in let dispatch_local_or_distant ~debug_name ~local ~distant meth path = let open Lwt_syntax in diff --git a/src/lib_proxy/rpc/dune b/src/lib_proxy/rpc/dune index ce0b9f1a0a11d5737a5c3c314cdf2c93bd62cca8..ebfb277ba01978df0830992c44604ed62b400c48 100644 --- a/src/lib_proxy/rpc/dune +++ b/src/lib_proxy/rpc/dune @@ -10,5 +10,6 @@ tezos-client-base tezos-mockup-proxy tezos-rpc - tezos-proxy) + tezos-proxy + lwt.unix) (flags (:standard -open Tezos_base.TzPervasives))) diff --git a/src/lib_proxy/tezos-proxy.opam b/src/lib_proxy/tezos-proxy.opam index 5e9695f7d30133049ea41621bbb69863f7a04d61..9693a68cfbdd460b102e4ff39b16769fb5bac608 100644 --- a/src/lib_proxy/tezos-proxy.opam +++ b/src/lib_proxy/tezos-proxy.opam @@ -18,6 +18,7 @@ depends: [ "tezos-shell-services" "tezos-context" "tezos-mockup-proxy" + "lwt" { >= "5.4.0" } "tezos-stdlib-unix" {with-test} "tezos-base-test-helpers" {with-test} "tezos-test-helpers" {with-test}