Giter Site home page Giter Site logo

automq / automq-for-rocketmq Goto Github PK

View Code? Open in Web Editor NEW
179.0 179.0 32.0 4.23 MB

A cloud native implementation for Apache RocketMQ 5.0

Home Page: https://www.automq.com

Java 99.24% Shell 0.56% Dockerfile 0.01% Smarty 0.20%
cloud-native kafka messaging rocketmq s3 storage streaming

automq-for-rocketmq's Introduction

AutoMQ: A Cloud-Native fork of Kafka by separating storage to S3

GitHub release (with filter) GitHub pull requests GitHub closed pull requests


        Twitter URL    


🍵 AutoMQ vs Other Streaming Platforms

Feature AutoMQ Apache Kafka Confluent Apache Pulsar Redpanda Warpstream
Apache Kafka Compatibility Native Kafka Native Kafka Native Kafka Non-Kafka Kafka Protocol Kafka Protocol
Source Code Availability Yes Yes No Yes Yes No
Stateless Broker Yes No No Yes No Yes
P99 Latency Single-digit
ms latency
> 400ms
Continuous Self-Balancing Yes No Yes Yes Yes Yes
Scale in/out In seconds In hours/days In hours In hours
(scale-in);
In seconds
(scale-out)
In hours In seconds
Spot Instance Support Yes No No No No Yes
Partition Reassignment In seconds In hours/days In hours In seconds In hours In seconds
Component Broker
Controller
Broker
Controller
Zookeeper
(Non-Kraft)
Broker
Controller
Zookeeper
Bookkeeper
Proxy
Broker
Controller
Agent
MetadataServer

Tips: Apache Kafka Compatibility's definition is comming from this blog.

🔶Why AutoMQ

  • Cloud Native: Built on cloud service. Every system design decision take cloud service's feature and billing items into consideration to offer best low-latency, scalable, reliable and cost-effective Kafka service on cloud.
  • High Reliability: Leverage the features of cloud service to offer RPO of 0 and RTO in seconds.
    • AWS: Use S3 express one zone and S3 to offer AZ level disaster recovery.
    • GCP: Use regional SSD and cloud storage to offer AZ level disaster recovery.
    • Azure: Use zone-redundant storage and blob storage to offer AZ level disaster recovery.
  • Serverless:
    • Auto Scaling: Watch key metrics of cluster and scale in/out automatically to match you workload and achieve pay-as-you-go.
    • Scaling in seconds: Computing layer (broker) is stateless and could scale in/out in seconds, which make AutoMQ true serverless. Learn more
    • Infinite scalable: Use cloud's object storage as the main storage, never worry about storage capacity.
  • Manage-less: Built-in auto-balancer component balance partition and network traffic across brokers automatically. Never worry about partition re-balance. Learn more
  • Cost effective: Use object storage as the main storage, take billing items into consideration when design system, fully utilize the cloud service, all of them contribute to AutoMQ and make it 10x cheaper than Apache Kafka. Refer to this report to see how we cut Apache Kafka billing by 90% on the cloud.
  • High performance:
    • Low latency: Use cloud block storage like AWS EBS as the durable cache layer to accelerate write.
    • High throughput: Use pre-fetching, batch processing and parallel to achieve high throughput.

    Refer to the AutoMQ Performance White Paper to see how we achieve this.

  • A superior alternative to Apache Kafka: 100% compatible with Apache Kafka greater than 0.9.x and not lose any good features of it, but cheaper and better.

image

✨Architecture

image

AutoMQ use logSegment as a code aspect of Apache Kafka to weave into our features. The architecture including the following main components:

  • S3Stream: A streaming library based on object storage offered by AutoMQ. It is the core component of AutoMQ and is responsible for reading and writing data to object storage. Learn more.
  • Stream: Stream is an abstraction to mapping the logSegment of Apache Kafka. LogSegment's data, index and other meta will mapping to different type of stream. Learn more
  • Durable Cache Layer: AutoMQ use a small size cloud block storage like AWS EBS as the durable cache layer to accelerate write. Pay attention that this is not tiered storage and AutoMQ broker can decoupled from the durable cache layer completely. Learn more
  • Stream Object: AutoMQ's data is organized by stream object. Data is read by stream object id through index. One stream have one stream object. Learn more
  • Stream set object: Stream set object is a collection of small stream object that aimed to decrease API invoke times and metadata size. Learn more

⛄Get started with AutoMQ

Quick Start With A Single Line

curl https://download.automq.com/install.sh | sh

The easiest way to run AutoMQ. You can experience the feature like Partition Reassignment in Seconds and Continuous Self-Balancing in your local machine. Learn more

Attention: Local mode mock object storage locally and is not a production ready deployment. It is only for demo and test purpose.

Run AutoMQ on cloud manually

Deploy AutoMQ manually with released tgz files on cloud, currently compatible with AWS, Aliyun Cloud, Tencent Cloud, Huawei Cloud and Baidu Cloud. Learn more

💬Community

You can join the following groups or channels to discuss or ask questions about AutoMQ:

👥How to contribute

If you've found a problem with AutoMQ, please open a GitHub Issues. To contribute to AutoMQ please see Code of Conduct and Contributing Guide. We have a list of good first issues that help you to get started, gain experience, and get familiar with our contribution process.

🌈Roadmap

Coming soon...

⭐License

AutoMQ is released under Business Source License 1.1. When contributing to AutoMQ, you can find the relevant license header in each file.

automq-for-rocketmq's People

Contributors

amos201600 avatar chillax-0v0 avatar daniel-y avatar kaimingwan avatar leizhiyuan avatar lizhanhui avatar mooc9988 avatar scnieh avatar shadowyspirits avatar superhx avatar ther1sing3un avatar wangxye avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

automq-for-rocketmq's Issues

Create topic queue failed when recover from crash

2023-10-10 20:42:01 INFO Controller-Async_2 - Create and open topic: 1 queue: 0
2023-10-10 20:42:01 ERROR Controller-Async_4 - [BUG] fail to read, expect objects not empty, streamId=2, startOffset=0, endOffset=10
2023-10-10 20:42:01 ERROR Controller-Async_4 - Create topic: 1 queue: 0 failed.
java.util.concurrent.CompletionException: java.lang.IllegalStateException: fail to read, expect objects not empty
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:649)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.IllegalStateException: fail to read, expect objects not empty
	at com.automq.stream.s3.cache.DefaultS3BlockCache.lambda$readFromS3$8(DefaultS3BlockCache.java:143)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
	... 6 common frames omitted
2023-10-10 20:42:01 ERROR Controller-Async_4 - read 2 [0, 10) from block cache fail
java.util.concurrent.CompletionException: java.lang.IllegalStateException: fail to read, expect objects not empty
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:649)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.lang.IllegalStateException: fail to read, expect objects not empty
	at com.automq.stream.s3.cache.DefaultS3BlockCache.lambda$readFromS3$8(DefaultS3BlockCache.java:143)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
	... 6 common frames omitted

Failed to revive message when rebooting server ungracefully

2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:12:46 ERROR ReviveService - [ReviveService]: Failed to revive message
com.automq.rocketmq.store.exception.StoreException: Not found check point
        at com.automq.rocketmq.store.service.ReviveService.lambda$tryRevive$0(ReviveService.java:121)
        at com.automq.rocketmq.store.service.RocksDBKVService.iterate(RocksDBKVService.java:245)
        at com.automq.rocketmq.store.service.api.KVService.iterate(KVService.java:74)
        at com.automq.rocketmq.store.service.ReviveService.tryRevive(ReviveService.java:109)
        at com.automq.rocketmq.store.service.ReviveService.run(ReviveService.java:93)
        at java.base/java.lang.Thread.run(Thread.java:833)

Couldn't open retry stream when starting simple consumer

2023-10-10 13:25:41 ERROR Controller-Async_7 - Failed to open stream 5
java.util.concurrent.CompletionException: com.automq.rocketmq.controller.exception.ControllerException: Stream[stream-id=5] is not found
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168)
at com.automq.rocketmq.store.S3StreamManager.openStream(S3StreamManager.java:50)
at com.automq.stream.s3.S3StreamClient.openStream0(S3StreamClient.java:106)
at com.automq.stream.s3.S3StreamClient.lambda$openStream$2(S3StreamClient.java:78)
at com.automq.stream.utils.FutureUtil.exec(FutureUtil.java:60)
at com.automq.stream.s3.S3StreamClient.openStream(S3StreamClient.java:78)
at com.automq.rocketmq.store.S3StreamStore.open(S3StreamStore.java:143)
at com.automq.rocketmq.store.StreamTopicQueue.lambda$retryStreamId$12(StreamTopicQueue.java:162)
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.automq.rocketmq.controller.exception.ControllerException: Stream[stream-id=5] is not found
at com.automq.rocketmq.controller.metadata.database.DefaultMetadataStore.openStream(DefaultMetadataStore.java:1122)
at com.automq.rocketmq.metadata.DefaultStoreMetadataService.openStream(DefaultStoreMetadataService.java:156)
... 13 common frames omitted

Recover records issue with restart broker

2023-10-08 14:27:54 INFO main - S3Storage starting
2023-10-08 14:27:54 INFO main - start to recover from ungraceful shutdown, recoverStartOffset: 2147495936, recoverRemainingBytes: 1073733632
2023-10-08 14:27:55 INFO main - recovered from ungraceful shutdown, WALHeader: WALHeader{magicCode=305419896, capacity=1073741824, trimOffset=1073737728, lastWriteTimestamp=157874965472250, nextWriteOffset=3221229568, slidingWindowStartOffset=3221229568, slidingWindowMaxLength=1048576, shutdownType=UNGRACEFULLY, crc=1629916851}
2023-10-08 14:27:55 INFO main - block WAL service started, cost: 769 ms
2023-10-08 14:27:56 INFO main - try recover from crash, recover records bytes size 1880
2023-10-08 14:27:56 INFO sdk-async-response-0-0 - Commit WAL object: object_id: -1
sequence_id: -1
, along with split stream objects: [stream_id: 1
end_offset: 5
object_id: 2
object_size: 2139
], compacted objects: []
2023-10-08 14:27:56 ERROR sdk-async-response-0-0 - Unexpected exception when commit WAL object
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "com.automq.rocketmq.controller.metadata.database.dao.S3Object.getState()" because "s3Object" is null
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1159)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at com.automq.stream.s3.WALObjectUploadTask.lambda$upload0$5(WALObjectUploadTask.java:134)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire$$$capture(CompletableFuture.java:718)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at com.automq.stream.s3.operator.DefaultS3Operator$DefaultWriter.lambda$close0$11(DefaultS3Operator.java:425)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire$$$capture(CompletableFuture.java:718)
	at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncApiCallMetricCollectionStage.lambda$execute$0(AsyncApiCallMetricCollectionStage.java:56)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncApiCallTimeoutTrackingStage.lambda$execute$2(AsyncApiCallTimeoutTrackingStage.java:69)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.lambda$attemptExecute$1(AsyncRetryableStage.java:177)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$null$0(MakeAsyncHttpRequestStage.java:105)
	at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
	at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2179)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.completeResponseFuture(MakeAsyncHttpRequestStage.java:238)
	at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$executeHttpRequest$3(MakeAsyncHttpRequestStage.java:163)
	at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
	at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
	at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)

Can not reopen stream

2023-10-10 14:55:04 INFO Controller-Async_9 - Create and open topic: 1 queue: 0
2023-10-10 14:55:04 ERROR Controller-Async_0 - openStream run with unexpected exception
org.apache.ibatis.exceptions.PersistenceException: 
### Error updating database.  Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1-0' for key 'range.idx_stream_start_offset'
### The error may exist in database/mapper/RangeMapper.xml
### The error may involve com.automq.rocketmq.controller.metadata.database.mapper.RangeMapper.create-Inline
### The error occurred while setting parameters
### SQL: INSERT INTO `range` (range_id, stream_id, epoch, start_offset, end_offset, broker_id)         VALUES (             ?,             ?,             ?,             ?,             ?,             ?         )
### Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1-0' for key 'range.idx_stream_start_offset'
	at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:199)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:184)
	at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:62)
	at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:142)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
	at jdk.proxy2/jdk.proxy2.$Proxy15.create(Unknown Source)
	at com.automq.rocketmq.controller.metadata.database.DefaultMetadataStore.openStream(DefaultMetadataStore.java:1223)
	at com.automq.rocketmq.metadata.DefaultStoreMetadataService.openStream(DefaultStoreMetadataService.java:156)
	at com.automq.rocketmq.store.S3StreamManager.openStream(S3StreamManager.java:50)
	at com.automq.stream.s3.S3StreamClient.openStream0(S3StreamClient.java:106)
	at com.automq.stream.s3.S3StreamClient.lambda$openStream$2(S3StreamClient.java:78)
	at com.automq.stream.utils.FutureUtil.exec(FutureUtil.java:60)
	at com.automq.stream.s3.S3StreamClient.openStream(S3StreamClient.java:78)
	at com.automq.rocketmq.store.S3StreamStore.open(S3StreamStore.java:143)
	at com.automq.rocketmq.store.StreamTopicQueue.lambda$open$0(StreamTopicQueue.java:88)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1-0' for key 'range.idx_stream_start_offset'
	at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:118)
	at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
	at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:916)
	at com.mysql.cj.jdbc.ClientPreparedStatement.execute(ClientPreparedStatement.java:354)
	at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
	at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
	at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:48)
	at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:75)
	at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:50)
	at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
	at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
	at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:197)
	... 21 common frames omitted

StoreMetadataService#retryStreamOf retruns an invalid stream id

The stream retrieved from StoreMetadataService#retryStreamOf can not be opened.

2023-10-10 14:39:13 ERROR Controller-Async_5 - Failed to open stream 17
java.util.concurrent.CompletionException: com.automq.rocketmq.controller.exception.ControllerException: Stream[stream-id=17] is not found
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332)
	at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674)
	at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
	at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2200)
	at com.automq.rocketmq.store.S3StreamManager.openStream(S3StreamManager.java:50)
	at com.automq.stream.s3.S3StreamClient.openStream0(S3StreamClient.java:106)
	at com.automq.stream.s3.S3StreamClient.lambda$openStream$2(S3StreamClient.java:78)
	at com.automq.stream.utils.FutureUtil.exec(FutureUtil.java:60)
	at com.automq.stream.s3.S3StreamClient.openStream(S3StreamClient.java:78)
	at com.automq.rocketmq.store.S3StreamStore.open(S3StreamStore.java:143)
	at com.automq.rocketmq.store.StreamTopicQueue.lambda$retryStreamId$12(StreamTopicQueue.java:162)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run$$$capture(CompletableFuture.java:1773)
	at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
	at java.base/java.lang.Thread.run(Thread.java:1589)
Caused by: com.automq.rocketmq.controller.exception.ControllerException: Stream[stream-id=17] is not found
	at com.automq.rocketmq.controller.metadata.database.DefaultMetadataStore.openStream(DefaultMetadataStore.java:1122)
	at com.automq.rocketmq.metadata.DefaultStoreMetadataService.openStream(DefaultStoreMetadataService.java:156)
	... 14 common frames omitted

Connection leak detection triggered for ibatis

2023-10-10 14:17:37 WARN HikariPool-1 housekeeper - Connection leak detection triggered for com.mysql.cj.jdbc.ConnectionImpl@1e812b22 on thread Controller_5, stack trace follows
java.lang.Exception: Apparent connection leak detected
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:145)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:67)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:345)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:89)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:333)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:142)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
at jdk.proxy2/jdk.proxy2.$Proxy7.current(Unknown Source)
at com.automq.rocketmq.controller.metadata.database.tasks.LeaseTask.run(LeaseTask.java:43)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 14:17:37 WARN HikariPool-1 housekeeper - Connection leak detection triggered for com.mysql.cj.jdbc.ConnectionImpl@2d8f4e6a on thread Controller_2, stack trace follows
java.lang.Exception: Apparent connection leak detected
at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:100)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.openConnection(JdbcTransaction.java:145)
at org.apache.ibatis.transaction.jdbc.JdbcTransaction.getConnection(JdbcTransaction.java:67)
at org.apache.ibatis.executor.BaseExecutor.getConnection(BaseExecutor.java:345)
at org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:89)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:64)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:333)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)
at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectOne(DefaultSqlSession.java:75)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:87)
at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:142)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)
at jdk.proxy2/jdk.proxy2.$Proxy7.currentWithShareLock(Unknown Source)
at com.automq.rocketmq.controller.metadata.database.DefaultMetadataStore.maintainLeadershipWithSharedLock(DefaultMetadataStore.java:284)
at com.automq.rocketmq.controller.metadata.database.tasks.SchedulerTask.run(SchedulerTask.java:49)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)

List S3 objects in atomic way

CompletableFuture<List<S3StreamObject>> streamObjectsFuture = metadataStore.listStreamObjects(streamId, startOffset, endOffset, limit);
CompletableFuture<List<S3WALObject>> walObjectsFuture = metadataStore.listWALObjects(streamId, startOffset, endOffset, limit);

return CompletableFuture.allOf(streamObjectsFuture, walObjectsFuture)
    .thenApplyAsync(v -> new Pair<>(streamObjectsFuture.join(), walObjectsFuture.join()));

Currently, we need two function calls to achieve a list s3 objects with two types.

UnsupportedOperationException thrown when getObjects from meta

2023-10-10 15:59:31 ERROR Controller-Async_7 - read 1 [0, 20) from block cache fail
java.util.concurrent.CompletionException: java.lang.UnsupportedOperationException
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:320)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:649)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1773)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: java.lang.UnsupportedOperationException: null
at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
at java.base/java.util.ImmutableCollections$AbstractImmutableList.sort(ImmutableCollections.java:261)
at com.automq.rocketmq.store.S3ObjectManager.lambda$getObjects$7(S3ObjectManager.java:151)
at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
... 5 common frames omitted

Replay ack and changeInvisibleDuration operation failed

2023-10-10 21:31:18 ERROR s3-storage-main - [DefaultStateMachine-1-0]: Replay ack operation failed
com.automq.rocketmq.store.exception.StoreException: Ack operation failed, check point not found
        at com.automq.rocketmq.store.DefaultMessageStateMachine.replayAckOperation(DefaultMessageStateMachine.java:289)
        at com.automq.rocketmq.store.service.StreamOperationLogService.replay(StreamOperationLogService.java:166)
        at com.automq.rocketmq.store.service.StreamOperationLogService.doReplay(StreamOperationLogService.java:148)
        at com.automq.rocketmq.store.service.StreamOperationLogService.lambda$logAckOperation$5(StreamOperationLogService.java:113)
        at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
        at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
        at com.automq.stream.s3.S3Storage.handleAppendCallback0(S3Storage.java:313)
        at com.automq.stream.s3.S3Storage.lambda$handleAppendCallback$13(S3Storage.java:301)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:31:22 ERROR s3-storage-main - [DefaultStateMachine-1-0]: Replay ack operation failed
com.automq.rocketmq.store.exception.StoreException: Ack operation failed, check point not found
        at com.automq.rocketmq.store.DefaultMessageStateMachine.replayAckOperation(DefaultMessageStateMachine.java:289)
        at com.automq.rocketmq.store.service.StreamOperationLogService.replay(StreamOperationLogService.java:166)
        at com.automq.rocketmq.store.service.StreamOperationLogService.doReplay(StreamOperationLogService.java:148)
        at com.automq.rocketmq.store.service.StreamOperationLogService.lambda$logAckOperation$5(StreamOperationLogService.java:113)
        at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
        at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
        at com.automq.stream.s3.S3Storage.handleAppendCallback0(S3Storage.java:313)
        at com.automq.stream.s3.S3Storage.lambda$handleAppendCallback$13(S3Storage.java:301)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)
2023-10-10 21:32:10 ERROR s3-storage-main - [DefaultStateMachine-1-0]: Replay ack operation failed
com.automq.rocketmq.store.exception.StoreException: Ack operation failed, check point not found
        at com.automq.rocketmq.store.DefaultMessageStateMachine.replayAckOperation(DefaultMessageStateMachine.java:289)
        at com.automq.rocketmq.store.service.StreamOperationLogService.replay(StreamOperationLogService.java:166)
        at com.automq.rocketmq.store.service.StreamOperationLogService.doReplay(StreamOperationLogService.java:148)
        at com.automq.rocketmq.store.service.StreamOperationLogService.lambda$logAckOperation$5(StreamOperationLogService.java:113)
        at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(CompletableFuture.java:646)
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
        at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
        at com.automq.stream.s3.S3Storage.handleAppendCallback0(S3Storage.java:313)
        at com.automq.stream.s3.S3Storage.lambda$handleAppendCallback$13(S3Storage.java:301)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
        at java.base/java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:264)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at java.base/java.lang.Thread.run(Thread.java:833)

Commmit WAL object falied

2023-10-10 13:31:29 INFO sdk-async-response-0-25 - Commit WAL object: object_id: -1
sequence_id: -1
, along with split stream objects: [stream_id: 1
start_offset: 7130
end_offset: 9683
object_id: 2
object_size: 104962087
], compacted objects: []
2023-10-10 13:31:29 WARN sdk-async-response-0-25 - Stream[stream-id=1]'s current range[range-id=0]'s end offset[0] is not equal to request start offset[7130]
2023-10-10 13:31:29 ERROR sdk-async-response-0-25 - S3WALObject[object-id=-1]'s stream advance check failed
2023-10-10 13:31:29 ERROR sdk-async-response-0-25 - Unexpected exception when commit WAL object
java.util.concurrent.CompletionException: com.automq.rocketmq.controller.exception.ControllerException: S3WALObject[object-id=-1]'s stream advance check failed
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168)
at com.automq.rocketmq.store.S3ObjectManager.commitWALObject(S3ObjectManager.java:101)
at com.automq.stream.s3.WALObjectUploadTask.lambda$commit$8(WALObjectUploadTask.java:142)
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at com.automq.stream.s3.WALObjectUploadTask.lambda$upload0$5(WALObjectUploadTask.java:134)
at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at com.automq.stream.s3.operator.DefaultS3Operator$DefaultWriter.lambda$close0$11(DefaultS3Operator.java:424)
at java.base/java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncApiCallMetricCollectionStage.lambda$execute$0(AsyncApiCallMetricCollectionStage.java:56)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncApiCallTimeoutTrackingStage.lambda$execute$2(AsyncApiCallTimeoutTrackingStage.java:69)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at software.amazon.awssdk.core.internal.http.pipeline.stages.AsyncRetryableStage$RetryingExecutor.lambda$attemptExecute$1(AsyncRetryableStage.java:177)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$null$0(MakeAsyncHttpRequestStage.java:105)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.completeResponseFuture(MakeAsyncHttpRequestStage.java:238)
at software.amazon.awssdk.core.internal.http.pipeline.stages.MakeAsyncHttpRequestStage.lambda$executeHttpRequest$3(MakeAsyncHttpRequestStage.java:163)
at java.base/java.util.concurrent.CompletableFuture.uniHandle(CompletableFuture.java:934)
at java.base/java.util.concurrent.CompletableFuture$UniHandle.tryFire(CompletableFuture.java:911)
at java.base/java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
Caused by: com.automq.rocketmq.controller.exception.ControllerException: S3WALObject[object-id=-1]'s stream advance check failed
at com.automq.rocketmq.controller.metadata.database.DefaultMetadataStore.commitWalObject(DefaultMetadataStore.java:1458)
at com.automq.rocketmq.metadata.DefaultStoreMetadataService.commitWalObject(DefaultStoreMetadataService.java:177)
... 41 common frames omitted

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.