From 2d9c0b7a4e240262cbd3da6ea50aa29defccd73e Mon Sep 17 00:00:00 2001 From: Hugo Heuzard Date: Tue, 22 Feb 2022 16:16:37 +0100 Subject: [PATCH] Proxy: remove dependency on Lwt_unix.sleep --- manifest/main.ml | 2 ++ src/bin_proxy_server/dune | 1 + src/bin_proxy_server/main_proxy_server.ml | 1 + src/bin_proxy_server/tezos-proxy-server.opam | 1 + src/lib_proxy/proxy_services.ml | 9 ++++++--- src/lib_proxy/proxy_services.mli | 1 + src/lib_proxy/rpc/RPC_client.ml | 7 ++++++- src/lib_proxy/rpc/dune | 3 ++- src/lib_proxy/tezos-proxy.opam | 1 + 9 files changed, 21 insertions(+), 5 deletions(-) diff --git a/manifest/main.ml b/manifest/main.ml index 78cac9b5e3e7..60de38c4b200 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 3718b93e0d9c..54cd6d74f9fe 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 cc472be301f3..69f6fd72ca49 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 f3b895f7ad0b..eb5b5ba6ec20 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 82c43a994954..5e9779d65332 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 e2b6bcb4512a..dda2d0c9527b 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 901f452db9ec..b5f6058b29ba 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 ce0b9f1a0a11..ebfb277ba019 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 5e9695f7d301..9693a68cfbdd 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} -- GitLab