<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 3.0.5
* Operating System version:MacOS
* Java version: 1.8

### Steps to reproduce this issue

1. 用任何方式设置某个服务的executes="6"，例如 <dubbo:service  ref="xxx"  interface="xx.xx.xx"  executes="6" />
2.自定义Filter(例如业务日志Filter)，并且该Filter优先级高于ExecuteLimitFilter。在filter中抛出异常，而不是返回result
3. 多次调用xx.xx.xx服务，出现该异常


Pls. provide [GitHub address] to reproduce this issue.

### Expected Behavior
多次调用xx.xx.xx服务，不会导致executes增长

<!-- What do you expect from the above steps？-->

### Actual Behavior
多次调用xx.xx.xx服务，导致executes只增不减

<!-- What actually happens? -->

If there is an exception, please attach the exception trace:
mapping=true&service.filter=accessLog&side=provider&timeout=3000&timestamp=1657868636995&version=1.0, cause: The service using threads greater than <dubbo:service executes="60" /> limited.
	at org.apache.dubbo.rpc.filter.ExecuteLimitFilter.invoke(ExecuteLimitFilter.java:49)
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:313)
	at org.apache.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:52)
	at org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:313)
	at com.lefit.dubbo.order.config.AccessLogFilter.invoke$original$nKWSl6Ad(AccessLogFilter.java:5
Just put your stack trace here!
```

}
                    } finally {
                        listenableFilter.removeListener(invocation);
                    }
                } else if (filter instanceof FILTER.Listener) {
                    FILTER.Listener listener = (FILTER.Listener) filter;
                    if (t == null) {
                        listener.onResponse(r, originalInvoker, invocation);
                    } else {
                        listener.onError(t, originalInvoker, invocation);
                    }
                }
            });
        }
        @Override
        public void destroy() {
            originalInvoker.destroy();
        }
        @Override
        public String toString() {
            return originalInvoker.toString();
        }
    }
    /**
     * Works on consumer side
     *
     * @param <T>
     * @param <TYPE>
     */
    class ClusterFilterChainNode<T, TYPE extends ClusterInvoker<T>, FILTER extends BaseFilter>