## What is the purpose of the change

Optimize heartbeat mechanism 
fix #3151 

## Brief changelog

0. adjust hashedWheelTimer's instance, make it only one instance for heartbeat 
tasks and reconnect tasks, and make it's per tick duration to 1 second.
1. initialize heartbeat task and reconnect task for each channel when it is 
connected.
2. initialize hashedWheelTimer on HeartbeatHandler instinstead of that when 
HeaderExchangeServer or HeaderExchangeClient initialize.
3. recalculate next tick duration for heartbeat task and reconnect task when 
it's task has done instead of using fixed duration.

and also I have provided a version of this optimization with detail log when 
heartbeat task or reconnect task has triggered in 
https://github.com/kexianjun/incubator-dubbo/tree/optimize_heart_with_log to 
make it convenient to test this optimization.

## Verifying this change

XXXXX

Follow this checklist to help us incorporate your contribution quickly and 
easily:

- [x] Make sure there is a 
[GITHUB_issue](https://github.com/apache/incubator-dubbo/issues) field for the 
change (usually before you start working on it). Trivial changes like typos do 
not require a GITHUB issue. Your pull request should address just this issue, 
without pulling in other changes - one PR resolves one issue.
- [x] Format the pull request title like `[Dubbo-XXX] Fix UnknownException when 
host config not exist #XXX`. Each commit in the pull request should have a 
meaningful subject line and body.
- [x] Write a pull request description that is detailed enough to understand 
what the pull request does, how, and why.
- [ ] Write necessary unit-test to verify your logic correction, more mock a 
little better when cross module dependency exist. If the new feature or 
significant change is committed, please remember to add integration-test in 
[test module](https://github.com/apache/incubator-dubbo/tree/master/dubbo-test).
- [ ] Run `mvn clean install -DskipTests=false` & `mvn clean test-compile 
failsafe:integration-test` to make sure unit-test and integration-test pass.
- [ ] If this contribution is large, please follow the [Software Donation 
Guide](https://github.com/apache/incubator-dubbo/wiki/Software-donation-guide).


[ Full content available at: 
https://github.com/apache/incubator-dubbo/pull/3213 ]
This message was relayed via gitbox.apache.org for 
[email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to