<!-- 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!
```

import org.apache.dubbo.rpc.Result;
import org.apache.dubbo.rpc.RpcContext;
import org.apache.dubbo.rpc.RpcException;
import org.apache.dubbo.rpc.RpcInvocation;
import org.apache.dubbo.rpc.TimeoutCountDown;
import org.apache.dubbo.rpc.cluster.filter.ClusterFilter;
import org.apache.dubbo.rpc.model.ApplicationModel;
import java.util.Map;
import java.util.Set;
import static org.apache.dubbo.common.constants.CommonConstants.CONSUMER;
import static org.apache.dubbo.common.constants.CommonConstants.REMOTE_APPLICATION_KEY;
import static org.apache.dubbo.common.constants.CommonConstants.TIME_COUNTDOWN_KEY;
/**
 * ConsumerContextFilter set current RpcContext with invoker,invocation, local host, remote host and port
 * for consumer invoker.It does it to make the requires info available to execution thread's RpcContext.
 *
 * @see Filter
 * @see RpcContext
 */
@Activate(group = CONSUMER, order = Integer.MIN_VALUE)
public class ConsumerContextFilter implements ClusterFilter, ClusterFilter.Listener {
    private ApplicationModel applicationModel;
    private Set<PenetrateAttachmentSelector> supportedSelectors;
    public ConsumerContextFilter(ApplicationModel applicationModel) {
        this.applicationModel = applicationModel;
        ExtensionLoader<PenetrateAttachmentSelector> selectorExtensionLoader = applicationModel.getExtensionLoader(PenetrateAttachmentSelector.class);
        supportedSelectors = selectorExtensionLoader.getSupportedExtensionInstances();
    }
    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {