Make 2-min sleep configurable (P2p_maintenance
)
This commit is contained in:
parent
35727d4ac3
commit
10c37f153d
@ -76,6 +76,7 @@ let default_p2p_limits : P2p.limits = {
|
|||||||
connection_timeout = 10. ;
|
connection_timeout = 10. ;
|
||||||
authentication_timeout = 5. ;
|
authentication_timeout = 5. ;
|
||||||
greylist_timeout = 86400 ; (* one day *)
|
greylist_timeout = 86400 ; (* one day *)
|
||||||
|
maintenance_idle_time = 120. ; (* two minutes *)
|
||||||
min_connections = 10 ;
|
min_connections = 10 ;
|
||||||
expected_connections = 50 ;
|
expected_connections = 50 ;
|
||||||
max_connections = 100 ;
|
max_connections = 100 ;
|
||||||
@ -133,6 +134,7 @@ let limit : P2p.limits Data_encoding.t =
|
|||||||
let open Data_encoding in
|
let open Data_encoding in
|
||||||
conv
|
conv
|
||||||
(fun { P2p.connection_timeout ; authentication_timeout ; greylist_timeout ;
|
(fun { P2p.connection_timeout ; authentication_timeout ; greylist_timeout ;
|
||||||
|
maintenance_idle_time ;
|
||||||
min_connections ; expected_connections ; max_connections ;
|
min_connections ; expected_connections ; max_connections ;
|
||||||
backlog ; max_incoming_connections ;
|
backlog ; max_incoming_connections ;
|
||||||
max_download_speed ; max_upload_speed ;
|
max_download_speed ; max_upload_speed ;
|
||||||
@ -152,7 +154,7 @@ let limit : P2p.limits Data_encoding.t =
|
|||||||
incoming_message_queue_size, outgoing_message_queue_size,
|
incoming_message_queue_size, outgoing_message_queue_size,
|
||||||
known_points_history_size, known_peer_ids_history_size,
|
known_points_history_size, known_peer_ids_history_size,
|
||||||
max_known_points)),
|
max_known_points)),
|
||||||
( max_known_peer_ids, greylist_timeout))))
|
( max_known_peer_ids, greylist_timeout, maintenance_idle_time))))
|
||||||
(fun (((( connection_timeout, authentication_timeout,
|
(fun (((( connection_timeout, authentication_timeout,
|
||||||
min_connections, expected_connections,
|
min_connections, expected_connections,
|
||||||
max_connections, backlog, max_incoming_connections,
|
max_connections, backlog, max_incoming_connections,
|
||||||
@ -162,8 +164,9 @@ let limit : P2p.limits Data_encoding.t =
|
|||||||
incoming_message_queue_size, outgoing_message_queue_size,
|
incoming_message_queue_size, outgoing_message_queue_size,
|
||||||
known_points_history_size, known_peer_ids_history_size,
|
known_points_history_size, known_peer_ids_history_size,
|
||||||
max_known_points)),
|
max_known_points)),
|
||||||
( max_known_peer_ids, greylist_timeout))) ->
|
( max_known_peer_ids, greylist_timeout, maintenance_idle_time))) ->
|
||||||
{ connection_timeout ; authentication_timeout ; greylist_timeout ;
|
{ connection_timeout ; authentication_timeout ; greylist_timeout ;
|
||||||
|
maintenance_idle_time ;
|
||||||
min_connections ; expected_connections ;
|
min_connections ; expected_connections ;
|
||||||
max_connections ; backlog ; max_incoming_connections ;
|
max_connections ; backlog ; max_incoming_connections ;
|
||||||
max_download_speed ; max_upload_speed ;
|
max_download_speed ; max_upload_speed ;
|
||||||
@ -234,13 +237,17 @@ let limit : P2p.limits Data_encoding.t =
|
|||||||
default_p2p_limits.known_points_history_size)
|
default_p2p_limits.known_points_history_size)
|
||||||
(opt "max_known_points" (tup2 uint16 uint16))
|
(opt "max_known_points" (tup2 uint16 uint16))
|
||||||
))
|
))
|
||||||
(obj2
|
(obj3
|
||||||
(opt "max_known_peer_ids" (tup2 uint16 uint16))
|
(opt "max_known_peer_ids" (tup2 uint16 uint16))
|
||||||
(dft "greylist-timeout"
|
(dft "greylist-timeout"
|
||||||
~description: "GC delay for the greylists tables, in seconds."
|
~description: "GC delay for the greylists tables, in seconds."
|
||||||
int31 default_p2p_limits.greylist_timeout)
|
int31 default_p2p_limits.greylist_timeout)
|
||||||
|
(dft "maintenance-idle-time"
|
||||||
))
|
~description: "How long to wait at most, in seconds, \
|
||||||
|
before running a maintenance loop."
|
||||||
|
float default_p2p_limits.maintenance_idle_time)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
let p2p =
|
let p2p =
|
||||||
let open Data_encoding in
|
let open Data_encoding in
|
||||||
|
@ -72,6 +72,7 @@ type limits = {
|
|||||||
connection_timeout : float ;
|
connection_timeout : float ;
|
||||||
authentication_timeout : float ;
|
authentication_timeout : float ;
|
||||||
greylist_timeout : int ;
|
greylist_timeout : int ;
|
||||||
|
maintenance_idle_time: float ;
|
||||||
|
|
||||||
min_connections : int ;
|
min_connections : int ;
|
||||||
expected_connections : int ;
|
expected_connections : int ;
|
||||||
@ -127,6 +128,7 @@ let create_connection_pool config limits meta_cfg conn_meta_cfg msg_cfg io_sched
|
|||||||
connection_timeout = limits.connection_timeout ;
|
connection_timeout = limits.connection_timeout ;
|
||||||
authentication_timeout = limits.authentication_timeout ;
|
authentication_timeout = limits.authentication_timeout ;
|
||||||
greylist_timeout = limits.greylist_timeout ;
|
greylist_timeout = limits.greylist_timeout ;
|
||||||
|
maintenance_idle_time = limits.maintenance_idle_time ;
|
||||||
incoming_app_message_queue_size = limits.incoming_app_message_queue_size ;
|
incoming_app_message_queue_size = limits.incoming_app_message_queue_size ;
|
||||||
incoming_message_queue_size = limits.incoming_message_queue_size ;
|
incoming_message_queue_size = limits.incoming_message_queue_size ;
|
||||||
outgoing_message_queue_size = limits.outgoing_message_queue_size ;
|
outgoing_message_queue_size = limits.outgoing_message_queue_size ;
|
||||||
|
@ -116,6 +116,9 @@ type limits = {
|
|||||||
greylist_timeout : int ;
|
greylist_timeout : int ;
|
||||||
(** GC delay for the grelists tables, in seconds. *)
|
(** GC delay for the grelists tables, in seconds. *)
|
||||||
|
|
||||||
|
maintenance_idle_time: float ;
|
||||||
|
(** How long to wait at most, in seconds, before running a maintenance loop. *)
|
||||||
|
|
||||||
min_connections : int ;
|
min_connections : int ;
|
||||||
(** Strict minimum number of connections (triggers an urgent maintenance) *)
|
(** Strict minimum number of connections (triggers an urgent maintenance) *)
|
||||||
|
|
||||||
|
@ -190,10 +190,11 @@ and too_many_connections st n_connected =
|
|||||||
|
|
||||||
let rec worker_loop st =
|
let rec worker_loop st =
|
||||||
let Pool pool = st.pool in
|
let Pool pool = st.pool in
|
||||||
|
let config = P2p_pool.config pool in
|
||||||
begin
|
begin
|
||||||
protect ~canceler:st.canceler begin fun () ->
|
protect ~canceler:st.canceler begin fun () ->
|
||||||
Lwt.pick [
|
Lwt.pick [
|
||||||
Lwt_unix.sleep 120. ; (* every two minutes *)
|
Lwt_unix.sleep config.P2p_pool.maintenance_idle_time ; (* default: every two minutes *)
|
||||||
Lwt_condition.wait st.please_maintain ; (* when asked *)
|
Lwt_condition.wait st.please_maintain ; (* when asked *)
|
||||||
P2p_pool.Pool_event.wait_too_few_connections pool ; (* limits *)
|
P2p_pool.Pool_event.wait_too_few_connections pool ; (* limits *)
|
||||||
P2p_pool.Pool_event.wait_too_many_connections pool ;
|
P2p_pool.Pool_event.wait_too_many_connections pool ;
|
||||||
|
@ -201,6 +201,7 @@ type config = {
|
|||||||
connection_timeout : float ;
|
connection_timeout : float ;
|
||||||
authentication_timeout : float ;
|
authentication_timeout : float ;
|
||||||
greylist_timeout : int ;
|
greylist_timeout : int ;
|
||||||
|
maintenance_idle_time: float ;
|
||||||
|
|
||||||
incoming_app_message_queue_size : int option ;
|
incoming_app_message_queue_size : int option ;
|
||||||
incoming_message_queue_size : int option ;
|
incoming_message_queue_size : int option ;
|
||||||
|
@ -106,6 +106,9 @@ type config = {
|
|||||||
greylist_timeout : int ;
|
greylist_timeout : int ;
|
||||||
(** GC delay for the grelists tables, in seconds. *)
|
(** GC delay for the grelists tables, in seconds. *)
|
||||||
|
|
||||||
|
maintenance_idle_time: float ;
|
||||||
|
(** How long to wait at most, in seconds, before running a maintenance loop. *)
|
||||||
|
|
||||||
incoming_app_message_queue_size : int option ;
|
incoming_app_message_queue_size : int option ;
|
||||||
(** Size of the message queue for user messages (messages returned
|
(** Size of the message queue for user messages (messages returned
|
||||||
by this module's [read] function. *)
|
by this module's [read] function. *)
|
||||||
|
@ -95,6 +95,7 @@ let detach_node f points n =
|
|||||||
connection_timeout = 10. ;
|
connection_timeout = 10. ;
|
||||||
authentication_timeout = 2. ;
|
authentication_timeout = 2. ;
|
||||||
greylist_timeout = 2 ;
|
greylist_timeout = 2 ;
|
||||||
|
maintenance_idle_time = 120. ;
|
||||||
incoming_app_message_queue_size = None ;
|
incoming_app_message_queue_size = None ;
|
||||||
incoming_message_queue_size = None ;
|
incoming_message_queue_size = None ;
|
||||||
outgoing_message_queue_size = None ;
|
outgoing_message_queue_size = None ;
|
||||||
|
Loading…
Reference in New Issue
Block a user