<!-- 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.1.4 
* Java version: 1.8

**我这里使用的是3.1.4版本，但是反馈的问题根据[Issue10761](https://github.com/apache/dubbo/pull/10761)描述已经在3.1.2版本修复**

### Steps to reproduce this issue

[复现此问题的demo](https://github.com/YuWan1117/dubbo-demo/tree/ft-upperAttachment)

1. 切到`github`的`dubbo-demo`项目的`ft-upperAttachment`分支
2. 启动`hello-service`（provider）
3. 启动`hello-admin` （consumer）
4. 请求`http://127.0.0.1:9321/`观察服务日志
#### Question Description
发起请求时，`hello-admin`通过`consumerFilter`向`attachment`中写入`header`信息`TestKey`对应的值为`TestValue`，观察`hello-service`日志通过`attachment`获取`TestKey`为`null`，获取`testkey`为`TestValue`。

### Code Reference
> consumerFilter
```
@Slf4j
@Activate(group = CommonConstants.CONSUMER)
public class ConsumerFilter implements Filter {

    @Override
    public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException {
        RpcContext.getClientAttachment().setAttachment("TestKey", "TestValue");
        log.info("ConsumerFilter, TestKey=TestValue");
        return invoker.invoke(invocation);
    }
}
```
> hello-service log
```
log.info("call sayHello function, TestKey={} testkey={}",
                RpcContext.getServerAttachment().getAttachment("TestKey"),  
                RpcContext.getServerAttachment().getAttachment("testkey")); 
```

### Expected Behavior

<!-- What do you expect from the above steps？-->
期望`RpcContext.getServerAttachment().getAttachment("TestKey")`输出`TestValue`

### Actual Behavior

<!-- What actually happens? -->
实际`RpcContext.getServerAttachment().getAttachment("TestKey")`输出`null`，通过`RpcContext.getServerAttachment().getAttachment("testkey")`输出`TestValue`

### 最后
辛苦社区同学解答我的疑问，是3.1.2版本没有成功修复还是我这里的理解/使用方式存在问题。感谢

### Reference
[dubbo-3.1.2 release](https://github.com/apache/dubbo/releases/tag/dubbo-3.1.2)
[Issue 10761 ](https://github.com/apache/dubbo/pull/10761)

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.dubbo.rpc.protocol.tri.stream;
import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
import org.apache.dubbo.common.logger.LoggerFactory;
import org.apache.dubbo.common.utils.JsonUtils;
import org.apache.dubbo.rpc.TriRpcStatus;
import org.apache.dubbo.rpc.model.FrameworkModel;
import org.apache.dubbo.rpc.protocol.tri.TripleHeaderEnum;
import org.apache.dubbo.rpc.protocol.tri.command.CancelQueueCommand;
import org.apache.dubbo.rpc.protocol.tri.command.DataQueueCommand;
import org.apache.dubbo.rpc.protocol.tri.command.EndStreamQueueCommand;