You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@dubbo.apache.org by "beiwei30 (GitHub)" <gi...@apache.org> on 2019/02/18 07:19:12 UTC
[GitHub] [incubator-dubbo] beiwei30 opened pull request #3498: fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
## What is the purpose of the change
fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
## Brief changelog
XXXXX
## 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.
- [ ] 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.
- [ ] 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/3498 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org
[GitHub] [incubator-dubbo] beiwei30 closed pull request #3498: fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
Posted by "beiwei30 (GitHub)" <gi...@apache.org>.
[ pull request closed by beiwei30 ]
[ Full content available at: https://github.com/apache/incubator-dubbo/pull/3498 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org
[GitHub] [incubator-dubbo] chickenlj commented on issue #3498: fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
Posted by "chickenlj (GitHub)" <gi...@apache.org>.
About the original code discussed in #1875:
```java
for (Map.Entry<String, Future<Result>> entry : results.entrySet()) {
Future<Result> future = entry.getValue();
try {
Result r = future.get(timeout, TimeUnit.MILLISECONDS);
if (r.hasException()) {
log.error("Invoke " + getGroupDescFromServiceKey(entry.getKey()) +
" failed: " + r.getException().getMessage(),
r.getException());
} else {
resultList.add(r);
}
} catch (Exception e) {
throw new RpcException("Failed to invoke service " + entry.getKey() + ": " + e.getMessage(), e);
}
}
```
I think if the global timeout is 5s, then each `invoker.invoke()` has been restricted to return a value in 5s (it can be a normal value or timeout exception), it will in turn complete the corresponding future, so all `future.get` will not block and will return immediatelly after 5s.
[ Full content available at: https://github.com/apache/incubator-dubbo/pull/3498 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org
[GitHub] [incubator-dubbo] chickenlj commented on issue #3498: fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
Posted by "chickenlj (GitHub)" <gi...@apache.org>.
I am thinking of the possibility of making each remote call async: `invocation.setAttachment(Constants.ASYNC_KEY, Boolean.TRUE.toString());`
then, `invoker.invoke()` itself will return a Future like async result directly, if this result has started to count timeout from the moment its request data was sent to the remote server, we will not need to calculate timeout by ourself like what we do now for each Future.
[ Full content available at: https://github.com/apache/incubator-dubbo/pull/3498 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org
[GitHub] [incubator-dubbo] scxwhite commented on pull request #3498: fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
Posted by "scxwhite (GitHub)" <gi...@apache.org>.
What do you think of replacing `submit` method with `execute` method?
[ Full content available at: https://github.com/apache/incubator-dubbo/pull/3498 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org
[GitHub] [incubator-dubbo] beiwei30 commented on issue #3498: fix issue #1875: MergeableClusterInvoker 超时处理逻辑问题
Posted by "beiwei30 (GitHub)" <gi...@apache.org>.
after discuss with @chickenlj, we believe the original logic can handle the scenario the issue#1875 reports.
[ Full content available at: https://github.com/apache/incubator-dubbo/pull/3498 ]
This message was relayed via gitbox.apache.org for notifications@dubbo.apache.org