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

- [x] 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.x
* Operating System version: xxx
* Java version: xxx

### Steps to reproduce this issue

The whole discussion context could be found in this SkyWalking's bug report, https://github.com/apache/skywalking/issues/8525
According to the discussion, when a service acts as a provider and consumer at the same time, `serviceContext.isConsumerSide();` always returns **true** even it is already in the customer calling context.

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

### Expected Behavior

`serviceContext.isConsumerSide();` works as expected, even it is in a `provider->internal logic->consumer` in-process scenario.

### Actual Behavior

<!-- What actually happens? -->

If there is an exception, please attach the exception trace:

```
Just put your stack trace here!
```

if (countDown != null) {
            TimeoutCountDown timeoutCountDown = (TimeoutCountDown) countDown;
            if (timeoutCountDown.isExpired()) {
                return AsyncRpcResult.newDefaultAsyncResult(new RpcException(RpcException.TIMEOUT_TERMINATE,
                    "No time left for making the following call: " + invocation.getServiceName() + "."
                        + invocation.getMethodName() + ", terminate directly."), invocation);
            }
        }
        RpcContext.removeServerContext();
        return invoker.invoke(invocation);
    }
    @Override
    public void onResponse(Result appResponse, Invoker<?> invoker, Invocation invocation) {
        
        RpcContext.getServerContext().setObjectAttachments(appResponse.getObjectAttachments());
        removeContext();
    }
    @Override
    public void onError(Throwable t, Invoker<?> invoker, Invocation invocation) {
        removeContext();
    }
    private void removeContext() {
        RpcContext.removeServiceContext();
        RpcContext.removeClientAttachment();
        
        
        
    }
}