apache / apache/pekko-management
HttpContactPointBootstrap always dead after probing timeout
- 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
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