MinIO异常the region is wrong; expecting ‘us-east-1‘

io.minio

minio

5.0.4

4. 解决历程

4.1 完整errorlog

首先自己调用MINIO的putObject方法,minioClient.putObject(minIOUtil.getBucketName(), zipFileName, inputStream, "application/json");比较完整err如下:

[qtp852143641-27] com.wx.x.x.x.RestfulCatchAOP 83 apply - operation failed(操作失败)s io.minio.errors.ErrorResponseException: The authorization header is malformed; the region is wrong; expecting ‘us-east-1’.

at io.minio.MinioClient.execute(MinioClient.java:1201) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient.executeGet(MinioClient.java:1294) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient.listIncompleteUploads(MinioClient.java:4294) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient.access$300(MinioClient.java:158) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient$7$1.populate(MinioClient.java:4159) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient$7$1.hasNext(MinioClient.java:4194) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient.getLatestIncompleteUploadId(MinioClient.java:4062) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient.putObject(MinioClient.java:3740) ~[minio-3.0.10.jar:3.0.10]

at io.minio.MinioClient.putObject(MinioClient.java:3383) ~[minio-3.0.10.jar:3.0.10]

at com.x.x.x.TdpServiceImpl.downLoad(TdpServiceImpl.java:142) ~[linkis-metadata-0.9.3.jar:?]

4.2 阅读errorLog

自己的TdpServiceImpl.java:142行 minioClient.putObject(minIOUtil.getBucketName(), zipFileName, inputStream, “application/json”)

MinioClient.java:3383 putObject(bucketName, objectName, null, new BufferedInputStream(stream), headerMap);

MinioClient.java:3740 检查是否存在不完整的分段上传 String uploadId = getLatestIncompleteUploadId(bucketName, objectName);

MinioClient.java:4062 返回给定存储桶名称和对象名称的不完整分段上传的最新上传ID。for (Result result : listIncompleteUploads(bucketName, objectName, true, false)) {

MinioClient.java:4194 填充populate();

MinioClient.java:4159 this.listMultipartUploadsResult = listIncompleteUploads(bucketName, nextKeyMarker, nextUploadIdMarker,

prefix, delimiter, 1000);

MinioClient.java:158 初始化 public class MinioClient {

MinioClient.java:4294 HttpResponse response = executeGet(bucketName, null, null, queryParamMap);

MinioClient.java:1294 return execute(Method.GET, getRegion(bucketName), bucketName, objectName, headerMap, queryParamMap, null, 0);

MinioClient.java:1201 throw new ErrorResponseException(errorResponse, response);

整体看下来,感觉contentType设置的不对,跟踪源码,发现contentType如果null,系统会自动设置一个。

于是minioClient.putObject(minIOUtil.getBucketName(), zipFileName, inputStream, null)运行后还是同样的错误the region is wrong; expecting 'us-east-1'.

4.3 谷歌

于是整体谷歌 io.minio.errors.ErrorResponseException: The authorization header is malformed; the region is wrong; expecting ‘us-east-1’

找到 https://github.com/minio/minio-java/issues/732 发现缺失是minIO的bug,然后已近修复 https://github.com/minio/minio-java/commit/22c7b122f770cbf4a2cb7d4b491e7d63fa6b5a94

在这里插入图片描述

在版本大于5.0.4以上就修复。

在这里插入图片描述

修复后源码如下

private static final String US_EAST_1 = “us-east-1”;

public void makeBucket(String bucketName, String region)

throws InvalidBucketNameException, RegionConflictException, NoSuchAlgorithmException, InsufficientDataException,

IOException, InvalidKeyException, NoResponseException, XmlPullParserException, ErrorResponseException,

InternalException {

// If region param is not provided, set it with the one provided by constructor

if (region == null) {

region = this.region;

}

// If constructor already sets a region, check if it is equal to region param if provided

if (this.region != null && !this.region.equals(region)) {

throw new RegionConflictException(“passed region conflicts with the one previously specified”);

}

String configString;

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值