The Apache Pulsar community releases version 2.7.5! 23 contributors provided improvements and bug fixes that delivered 89 commits. Thanks for all your contributions.
The highlight of the 2.7.5 release is that it fixes some critical bugs on broker, proxy, and storage, including message/data loss, broker deadlock, and connection leak. Note that 2.7.5 is the last release of 2.7.x.
This blog walks through the most noteworthy changes. For the complete list, including all feature enhancements and bug fixes, check out the Pulsar 2.7.5 Release Notes.
Fixed the deadlock on metadata cache missing while checking replications. PR-16889
Issue
After the changes in #12340, there are still a couple of places making blocking calls. These calls occupy all the ordered scheduler threads preventing the callbacks from completing until the 30 seconds timeout expires.
Resolution
Change the blocking calls to async mode on the metadata callback thread.
Fixed the deadlock when using the key_shared mode. PR-11965
Issue
When the key_shared mode is used in consumers, deadlock may happen in the broker due to some race conditions and result in a lot of CLOSE_WAIT
status connections.
Resolution
Change unlock before the callback in the asyncDelete
function of ManagedCursorImpl
.
Fixed the message loss issue due to ledger rollover. PR-14703
Issue
If users config managedLedgerMaxLedgerRolloverTimeMinutes > 0
, and the rollover happens when the ManagedLedger state is CreatingLedger
, the messages written during that time are lost.
Resolution
Rollover only when the ledger state is LedgerOpened
.
Fixed the port exhaustion and connection issues in Pulsar Proxy. PR-14078
Issue
Pulsar Proxy can get into a state where it stops proxying Broker connections while Admin API proxying keeps working.
Resolution
Optimize the proxy connection to fail-fast when the target broker isn't active. Fix the race conditions in Pulsar Proxy when establishing a connection, leading to invalid states and hanging connections. Add connection timeout handling to proxy connections. Add read timeout handling to incoming connections and proxied connections.
Fixed the compaction data loss due to missed compaction properties during cursor reset. PR-16404
Issue
The compaction reader seeks the earliest position to read data from the topic, but the compaction properties are missed during cursor reset, which leads to the initialized compaction subscribe without a compaction horizon, so the compaction reader skips the last compacted data. It only happens when initializing the compaction subscription and can be introduced by the load balance or topic unloading manually.
Resolution
Keep the properties for resetting the cursor while the cursor is for data compaction. Copy the properties to the new mark delete entry while advancing the cursor, which is triggered by the managed ledger internal. It's not only for the compacted topic, and the internal task should not lose the properties when trimming the cursor.
What’s Next?
If you are interested in learning more about Pulsar 2.7.5, you can download and try it out now!
For more information about the Apache Pulsar project and current progress, visit the Pulsar website, follow the project on Twitter @apache_pulsar, and join Pulsar Slack!