[ 
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)

Reply via email to