apache / apache/pekko-management

HttpContactPointBootstrap always dead after probing timeout

Open
#209 5 comments 2 reactions 0 assignees View on GitHub
Dominant language
Scala
Stars
33
Forks
19
Avg merge
4h 48m
Merged PRs (30d)
29

Description

# Explain

In the cluster bootstrapping, we will create a child actor for handling HTTP probing, this actor will use the config `probingFailureTimeout` as the deadline time:

https://github.com/apache/pekko-management/blob/7ed2b5b3be0d9ad6fb664e1f5a31c5ac9c21a2c5/management-cluster-bootstrap/src/main/scala/org/apache/pekko/management/cluster/bootstrap/internal/HttpContactPointBootstrap.scala#L99-L103

At the same time, we are using the same configuration `probingFailureTimeout` as probing future timeout too.

https://github.com/apache/pekko-management/blob/7ed2b5b3be0d9ad6fb664e1f5a31c5ac9c21a2c5/management-cluster-bootstrap/src/main/scala/org/apache/pekko/management/cluster/bootstrap/internal/HttpContactPointBootstrap.scala#L113-L116

There is only one way to handle these timeouts and deadlines, As you can see, because of the existence of a deadline, the `else ` logic will never be executed.

https://github.com/apache/pekko-management/blob/7ed2b5b3be0d9ad6fb664e1f5a31c5ac9c21a2c5/management-cluster-bootstrap/src/main/scala/org/apache/pekko/management/cluster/bootstrap/internal/HttpContactPointBootstrap.scala#L118-L127

# Discuss

I think we may need two configurations for deadline and timeout. In such cases, when there is network latency for the contact point node, the`HttpContactPointBootstrap` actor does not need to be frequently destroyed and created. At least we have some buffer time.

wdyt @pjfanning @He-Pin @mdedetrich @samueleresca

Contributor guide

Open the contributing guide

Research direction

Start in management-cluster-bootstrap/src/main/scala/org/apache/pekko/management/cluster/bootstrap/internal/HttpContactPointBootstrap.scala, especially lines 99-127. Trace how probingFailureTimeout is used for both the actor deadline and probing future timeout, then review the discussion about separating them. Done means the timeout handling no longer makes the actor permanently dead after a probing timeout and the intended configuration behavior is established.

Written by the indexing model from the issue text.

Assessment

Tech stack
scala
Domain
distributed-systems, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.