You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@servicecomb.apache.org by "Haishi Yao (Jira)" <ji...@apache.org> on 2019/11/19 11:37:00 UTC
[jira] [Closed] (SCB-1469) SCBEngine should abandon unfinished
invocations if waiting for invocation finished is timed out
[ https://issues.apache.org/jira/browse/SCB-1469?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Haishi Yao closed SCB-1469.
---------------------------
Resolution: Fixed
> SCBEngine should abandon unfinished invocations if waiting for invocation finished is timed out
> -----------------------------------------------------------------------------------------------
>
> Key: SCB-1469
> URL: https://issues.apache.org/jira/browse/SCB-1469
> Project: Apache ServiceComb
> Issue Type: Bug
> Components: Java-Chassis
> Reporter: Haishi Yao
> Priority: Minor
>
> When a microservice instance is going to exit, the SCBEngine will block the exit procedure, waiting for all of the invocations in processing status get finished. And in the method SCBEngine#validAllInvocationFinished, the unfinished invocations counter is checked. After waiting for a period of time, if there are still unfinished invocations, the SCBEngine should print error log to warn users about those invocations and exit the process forcely.
> However, currently in the method SCBEngine#validAllInvocationFinished only the error log is printed, but no exit operation is done, leaving the exit procedure still blocked.
> You can find the code segment to be fixed like below in the class SCBEngine:
> {code:java}
> private void validAllInvocationFinished() throws InterruptedException {
> long start = System.currentTimeMillis();
> while (true) {
> long remaining = invocationStartedCounter.get() - invocationFinishedCounter.get();
> if (remaining == 0) {
> return;
> }
> if (System.currentTimeMillis() - start > TimeUnit.SECONDS.toMillis(30)) {
> LOGGER.error("wait for all requests timeout, abandon waiting, remaining requests: {}.", remaining);
> // since the waiting logic is timed out, should return to exit here
> }
> TimeUnit.SECONDS.sleep(1);
> }
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)