huaweicloud-sdk-java-obs icon indicating copy to clipboard operation
huaweicloud-sdk-java-obs copied to clipboard

Raise StackOverflowError with latest version sdk (3.23.9.1)

Open Shawyeok opened this issue 1 year ago • 3 comments

Runtime JDK 11, with sdk com.huaweicloud:esdk-obs-java-bundle:3.23.9.1

2023-12-08T06:14:55.533Z [ArchiveThread-persistent://data/uu/feature.plain.result.queue-partition-0] ERROR com.xxx.archive.PartitionArchive - Last message archive upload failed, exit message archive
com.obs.services.exception.ObsException: OBS service Error Message. Request Error: java.lang.StackOverflowError
	at com.obs.services.internal.utils.ServiceUtils.changeFromServiceException(ServiceUtils.java:540)
	at com.obs.services.AbstractClient.doActionWithResult(AbstractClient.java:398)
	at com.obs.services.AbstractObjectClient.putObject(AbstractObjectClient.java:284)
	at com.obs.services.AbstractObjectClient.putObject(AbstractObjectClient.java:321)
	at com.xxx.obs.HuaweiObjectStorageService.lambda$putArchive$0(HuaweiObjectStorageService.java:86)
	at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.StackOverflowError
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
	at java.base/java.util.Collections$UnmodifiableCollection.isEmpty(Collections.java:1033)
...

Client putObject code below: image

Observed once in production, cause currently unknown.

Shawyeok avatar Dec 08 '23 07:12 Shawyeok

检查jvm参数xss, 建议将xss参数设置为1M。xss是jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M。

liqiuqiu111 avatar Dec 11 '23 08:12 liqiuqiu111

检查jvm参数xss, 建议将xss参数设置为1M。xss是jvm启动的每个线程分配的内存大小,默认JDK1.4中是256K,JDK1.5+中是1M。

We do use the default value for xss. According to the stacktrace, it looks like a infinite recursive call, no idea what's happened here.

Shawyeok avatar Dec 11 '23 10:12 Shawyeok

Related https://bugs.openjdk.org/browse/JDK-8177031

Shawyeok avatar Jan 06 '24 08:01 Shawyeok