Istio将http header全部修改成了小写导致runsql取不到Location
baizhimafa opened this issue · 9 comments
当前版本
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.32.5-public</version>
</dependency>
当响应头被修改成小写后,com.aliyun.odps.Instances#create(String project, Job job)这里就取不到直接异常了
Response resp = client.stringRequest(resource, "POST", null, headers, xml);
String location = resp.getHeaders().get(Headers.LOCATION);
if (location == null || location.trim().length() == 0) {
throw new OdpsException("Invalid response, Location header required.");
}
Header被改掉目前只在过通过proxy访问的时候发生过,你是这种情况吗?
Header被改掉目前只在过通过proxy访问的时候发生过,你是这种情况吗?
这点我不清楚,据搭建这套容器环境的人说是Istio修改了header
Header被改掉目前只在过通过proxy访问的时候发生过,你是这种情况吗?
这点我不清楚,据搭建这套容器环境的人说是Istio修改了header
应该是类似的,我们内部讨论下怎么处理这种场景
我们这边修改+测试+发布的周期可能比较长,你这边着急的话可能要clone一份代码,本地编译一个版本
我扫了下代码,应该改两处就可以
-
DefaultConnection.getResponse:
在这个方法里面把header的key都转成lower case -
Headers
在这个方法里面把这些常量都改成lower case
我也遇到的同样的问题,响应头的location是小写,不是Location,所以获取不到抛异常
<dependency>
<groupId>com.aliyun.odps</groupId>
<artifactId>odps-sdk-core</artifactId>
<version>0.33.7-public</version>
</dependency>
我也遇到的同样的问题,响应头的location是小写,不是Location,所以获取不到抛异常
com.aliyun.odps
odps-sdk-core
0.33.7-public
目前这种问题都是因为proxy导致的
我也遇到了。
现在容器化和Service Mesh(基于Sidecar Proxy)技术在发展,请尽快修复一下这个问题吧。
Header被改掉目前只在过通过proxy访问的时候发生过,你是这种情况吗?
这点我不清楚,据搭建这套容器环境的人说是Istio修改了header
应该是类似的,我们内部讨论下怎么处理这种场景
我们这边修改+测试+发布的周期可能比较长,你这边着急的话可能要clone一份代码,本地编译一个版本
我扫了下代码,应该改两处就可以
- DefaultConnection.getResponse:
在这个方法里面把header的key都转成lower case- Headers
在这个方法里面把这些常量都改成lower case
我觉得不应该是单纯地改成小写,而是应该像通用的Http库一样,忽略Header的大小写(本来Header就是Case-Insensitive
)
Header被改掉目前只在过通过proxy访问的时候发生过,你是这种情况吗?
这点我不清楚,据搭建这套容器环境的人说是Istio修改了header
应该是类似的,我们内部讨论下怎么处理这种场景
我们这边修改+测试+发布的周期可能比较长,你这边着急的话可能要clone一份代码,本地编译一个版本
我扫了下代码,应该改两处就可以
- DefaultConnection.getResponse:
在这个方法里面把header的key都转成lower case- Headers
在这个方法里面把这些常量都改成lower case我觉得不应该是单纯地改成小写,而是应该像通用的Http库一样,忽略Header的大小写(本来Header就是
Case-Insensitive
)
上面说的是一个快速绕过的方法
正式的fix,下一个版本会发布
fixed in version 0.34.4-public