Skip to content

Apache Celeborn™ 0.7.0 Release Notes

Highlight

  • Engine Support: Spark 4.1/4.2 and Flink 2.1/2.2/2.3 support; Spark 4.0 and Flink 2.0 client maturity. Removed Spark 2.4, Flink 1.16/1.17, and Hadoop 2 client support.
  • C++ Native Client (CIP-14): Full push/merge data path including PushData and PushMergedData, revive and ReviveManager, MapperEnd support, LZ4/ZSTD compression and decompression, retry logic for createReader and RetryFetchChunk, heartbeat message decoding, native transport with DNS resolution, and C++-write/Java-read hybrid integration tests for LZ4 and ZSTD — a major push toward feature parity with the Java client.
  • Encryption at Rest (CIP-22): Spark-side implementation landed.
  • Shuffle Integrity: End-to-end integrity check for Flink, iterator fully-consumed validation, and extended E2E checked zone.
  • Remote Storage (S3/OSS/HDFS): S3 client caching, credentials provider support, DFS replication factor configuration, MapPartitionData on DFS, and multiple robustness fixes.
  • Observability: Flush latency per storage tier, eviction counts, read buffer availability, metadata operation metrics, and more — all reflected in the Grafana dashboards.
  • Performance: Zero-copy sendfile for FileRegion in Netty native transports, parallelized open stream and commit paths, reduced lock contention on hot paths, and parallel pushData/mergeData in hash writer close phase.
  • Durability & Reliability: fsync on commit, automatic RocksDB restoration, disk-full rejection, Ratis stepdown and outbox retry, and numerous race-condition and resource-leak fixes.
  • Security: RPC authorization for ReviseLostShuffles and ApplicationMetaRequest to prevent cross-application metadata modification and secret disclosure, Java deserialization filter, configurable HTTP auth bypass paths, HTTP authentication for Celeborn CLI, and CVE fixes for lz4-java, jersey, and jetty.
  • Standalone LifecycleManager and Rust SDK for running Celeborn's shuffle lifecycle management without a Spark/Flink driver, plus Helm chart improvements including volume claim templates, service account annotations, and configurable worker pod grace period.

Improvement

  • [CELEBORN-2401] Change default of celeborn.client.spark.fetch.cleanFailedShuffle to true
  • [CELEBORN-2399] Fix HA worker heartbeat using stateStartTime instead of actual time
  • [CELEBORN-2406] Avoid blocking GetReducerFileGroup RPC under ConcurrentHashMap bin lock in updateFileGroup
  • [CELEBORN-2402] Log the hostname for Celeborn shuffle fetch failures
  • [CELEBORN-2404] Fix required field typo in SendWorkerEventRequest schema
  • [CELEBORN-2394] Add REST v1 API to unregister shuffles
  • [CELEBORN-2396][CLI] Fix CelebornCli.main discarding the configured CommandLine instance
  • [CELEBORN-2395] Reduce allocations in Utils.split* methods
  • [CELEBORN-2397][CLI] Expose logger level get/set endpoints in celeborn-cli
  • [CELEBORN-2308] Bump commons-lang3 version from 3.17.0 to 3.20.0

  • [CELEBORN-894] End to End Integrity Checks

  • [CELEBORN-935][FOLLOWUP] Remove WorkerRemove in MetaHandler
  • [CELEBORN-1056][FOLLOWUP] Support upsert and delete of dynamic configuration management
  • [CELEBORN-1258] Support to register application info with user identifier and extra info
  • [CELEBORN-1319][FOLLOWUP] Support celeborn optimize skew partitions patch for Spark v3.5.6 and v4.0.0
  • [CELEBORN-1413][FOLLOWUP] Bump spark 4.0 version to 4.0.0
  • [CELEBORN-1528][HELM] Use volume claim template to support various storage backend
  • [CELEBORN-1572][FOLLOWUP] Support to show Celeborn CLI version for sub command
  • [CELEBORN-1577][FOLLOWUP] Improve check quota message
  • [CELEBORN-1627][FOLLOWUP] Fix the issue where the case of name affects the metrics dashboard
  • [CELEBORN-1673][FOLLOWUP] Shouldn't ignore InterruptedException when client retry
  • [CELEBORN-1719][FOLLOWUP] Rename throwsFetchFailure to stageRerunEnabled
  • [CELEBORN-1720][FOLLOWUP] Fix flakyTest - check if fetch failure task another attempt is running or successful
  • [CELEBORN-1721][FOLLOWUP] Return softsplit if there is no hardsplit for pushMergeData
  • [CELEBORN-1792][FOLLOWUP] Add missing break in resumeByPinnedMemory
  • [CELEBORN-1793] Add netty pinned memory metrics
  • [CELEBORN-1817][FOLLOWUP] Correct the problematic metrics
  • [CELEBORN-1844][FOLLOWUP] alway try to use memory storage if available
  • [CELEBORN-1892] Adding register with master fail count metric for worker
  • [CELEBORN-1917] Support celeborn.client.push.maxBytesSizeInFlight
  • [CELEBORN-1931][FOLLOWUP] Update config version for worker local flusher gather api
  • [CELEBORN-1983][FOLLOWUP] Fix fetch fail not throw due to reach spark maxTaskFailures
  • [CELEBORN-1984] Merge ResourceRequest to transportMessageProtobuf
  • [CELEBORN-2003] Add retry mechanism when completing S3 multipart upload
  • [CELEBORN-2005] Introduce numBytesIn, numBytesOut, numBytesInPerSecond, numBytesOutPerSecond metrics for RemoteShuffleServiceFactory
  • [CELEBORN-2006] LifecycleManager should avoid parsing shufflePartitionType every time
  • [CELEBORN-2007] Reduce PartitionLocation memory usage
  • [CELEBORN-2008] SlotsAllocator should select disks randomly in RoundRobin mode
  • [CELEBORN-2009] Commit files request failure should exclude worker in LifecycleManager
  • [CELEBORN-2010][INFRA] Add release guide
  • [CELEBORN-2011][INFRA] Add a script to simplify the process of creating release notes
  • [CELEBORN-2012] Add license for http5
  • [CELEBORN-2013] Upgrade scala binary version of spark-3.3, spark-3.4, spark-3.5 profile to 2.13.8
  • [CELEBORN-2014] updateInterruptionNotice REST API
  • [CELEBORN-2015] Retry IOException failures for RPC requests
  • [CELEBORN-2017][HELM] Add namespace to the metadata
  • [CELEBORN-2018] Support min number of workers selected for shuffle
  • [CELEBORN-2020] Support http authentication for Celeborn CLI
  • [CELEBORN-2021] Fix issues on regression HDFS and OSS before release 0.6
  • [CELEBORN-2022] Spark4 Client should package commons-io
  • [CELEBORN-2023] Spark4 Client incompatible with isLocalMaster method
  • [CELEBORN-2024] Publish commit files fail count metrics
  • [CELEBORN-2025] RpcFailure Scala 2.13 serialization is incompatible
  • [CELEBORN-2026] Skip build tez client
  • [CELEBORN-2027] Allow CelebornShuffleReader to decompress data on demand
  • [CELEBORN-2028] Setup GA for grafana dashboard
  • [CELEBORN-2029][FLINK] Some minor optimizations in the Flink integration
  • [CELEBORN-2030] Bump Spark from 3.5.5 to 3.5.6
  • [CELEBORN-2031] Interruption Aware Slot Selection
  • [CELEBORN-2032] Create reader should change to peer by taskAttemptId
  • [CELEBORN-2033] updateProduceBytes should be called even if updateProduceBytes throws exception
  • [CELEBORN-2036] Fix NPE when TransportMessage has null payload
  • [CELEBORN-2040] Avoid throw FetchFailedException when GetReducerFileGroupResponse failed via broadcast
  • [CELEBORN-2042] Fix FetchFailure handling when TaskSetManager is not found
  • [CELEBORN-2043] Fix IndexOutOfBoundsException exception in getEvictedFileWriter
  • [CELEBORN-2044] Proactively cleanup stream state from ChunkStreamManager when the stream ends
  • [CELEBORN-2045] Add logger sinks to allow persist metrics data and avoid possible worker OOM
  • [CELEBORN-2046] Specify extractionDir of AsyncProfilerLoader with celeborn.worker.jvmProfiler.localDir
  • [CELEBORN-2047] Support MapPartitionData on DFS
  • [CELEBORN-2049] Bump Ratis version from 3.1.3 to 3.2.1
  • [CELEBORN-2051] Support write MapPartition to DFS
  • [CELEBORN-2052] Fix unexpected warning logs in Flink caused by duplicate BufferStreamEnd messages
  • [CELEBORN-2053] Refactor remote storage configration usage
  • [CELEBORN-2055] Fix some typos
  • [CELEBORN-2056] Make the wait time for the client to read non shuffle partitions configurable
  • [CELEBORN-2057] Bump ap-loader version from 3.0-9 to 4.0-10
  • [CELEBORN-2058] Add retry to avoid committing failed with HDFS storage
  • [CELEBORN-2061] Introduce metrics to count the amount of data flushed into different storage types
  • [CELEBORN-2063] Parallelize the create partition writer in handleReserveSlots to speed up the reserveSlots RPC process time
  • [CELEBORN-2064] Fix the issue where reading replica partition that returns zero chunk causes tasks to hang
  • [CELEBORN-2066] Release workers only with high workload when the number of excluded worker set is too large
  • [CELEBORN-2067] Clean up deprecated Guava API usage
  • [CELEBORN-2068] TransportClientFactory should close channel explicitly to avoid resource leak for timeout or failure
  • [CELEBORN-2070][CIP-14] Support MapperEnd/Response in CppClient
  • [CELEBORN-2071] Fix the issue where some gauge metrics were not registered to the metricRegistry
  • [CELEBORN-2072] Add missing instance filter to grafana dashboard
  • [CELEBORN-2073] Fix PartitionFileSizeBytes metrics
  • [CELEBORN-2075] Fix OpenStreamTime metrics for PbOpenStreamList request
  • [CELEBORN-2077] Improve toString by JEP-280 instead of ToStringBuilder
  • [CELEBORN-2078] Fix wrong grafana metrics units
  • [CELEBORN-2080] Bump Flink from 1.19.2, 1.20.1 to 1.19.3, 1.20.2
  • [CELEBORN-2081] PushDataHandler onFailure log shuffle key
  • [CELEBORN-2082] Add the log of excluded workers with high workloads
  • [CELEBORN-2083] For WorkerStatusTracker, log error for recordWorkerFailure
  • [CELEBORN-2085] Use a fixed buffer for flush copying to reduce GC
  • [CELEBORN-2086] S3FlushTask and OssFlushTask should close ByteArrayInputStream to avoid resource leak
  • [CELEBORN-2087] Refine the docs configuration table view
  • [CELEBORN-2088] Fix NPE if celeborn.client.spark.fetch.cleanFailedShuffle enabled
  • [CELEBORN-2090] Support Lz4 Decompression in CppClient
  • [CELEBORN-2091] Support Zstd Decompression in CppClient
  • [CELEBORN-2092] Inc COMMIT_FILES_FAIL_COUNT when TimerWriter::close timeout
  • [CELEBORN-2093] Support Flink 2.1
  • [CELEBORN-2095][CIP-14] Support RegisterShuffle/Response in cppClient
  • [CELEBORN-2096] Support Lz4 Compression in CppClient
  • [CELEBORN-2097] Support Zstd Compression in CppClient
  • [CELEBORN-2098][CIP-14] Support Revive/Response in cppClient
  • [CELEBORN-2100] Fix performance issue on readToReadOnlyBuffer
  • [CELEBORN-2102] Introduce SorterCacheHitRate metric to monitor the hit rate of index cache for sorter
  • [CELEBORN-2104] Clean up sources of NettyRpcEnv, Master and Worker to avoid thread leaks
  • [CELEBORN-2105] RpcMetricsTracker should clean up metrics for stopping Inbox
  • [CELEBORN-2106] CommitFile/Reserved location shows detail primary location UniqueId
  • [CELEBORN-2108] Remove redundant PartitionType
  • [CELEBORN-2109] Add EvictedLocalFileCount and EvictedDfsFileCount metrics
  • [CELEBORN-2111] Introduce metrics to flush time for different storage types
  • [CELEBORN-2112] Introduce PausePushDataStatus and PausePushDataAndReplicateStatus metric to record status of pause push data
  • [CELEBORN-2115][CIP-14] Support PushData in cppClient
  • [CELEBORN-2117] Use git submodules for Chart Actions
  • [CELEBORN-2118] Introduce IsHighWorkload metric to monitor worker overload status
  • [CELEBORN-2119] DfsTierWriter should close s3MultipartUploadHandler and ossMultipartUploadHandler for close resource
  • [CELEBORN-2122] Avoiding multiple accesses to HDFS when retrieving index
  • [CELEBORN-2123] Add log for commit file size
  • [CELEBORN-2124][CIP-14] Support PushData network interfaces in cppClient
  • [CELEBORN-2125] Improve PartitionFilesSorter sort timeout log
  • [CELEBORN-2127] When fileWriter is closed, it should return HARD_SPLIT StatusCode
  • [CELEBORN-2128] Close hadoopFs FileSystem when worker is closed
  • [CELEBORN-2129] CelebornBufferStream should invoke openStreamInternal in moveToNextPartitionIfPossible to avoid client creation timeout
  • [CELEBORN-2130] Add support for redirection application registration to the leader
  • [CELEBORN-2131] Add sorting duration logs in FileSorter
  • [CELEBORN-2132] Enhance ratis peer add operation to support clientAddress & adminAddress
  • [CELEBORN-2133] LifecycleManager should log stack trace of Throwable for invoking appShuffleTrackerCallback
  • [CELEBORN-2134] When creating a DiskFile, retrieve the storage type
  • [CELEBORN-2135] Rename Blaze to Auron
  • [CELEBORN-2137] Remove unused MAPGROUP PartitionType
  • [CELEBORN-2138] Avoiding multiple accesses to HDFS When writing index file
  • [CELEBORN-2139] Fix the condition for using OSS storage
  • [CELEBORN-2142] DfsTierWriter should create for unavailable disks
  • [CELEBORN-2144] Bump spark 4.0.1
  • [CELEBORN-2145] QuotaManager should respect celeborn.quota.interruptShuffle.enabled of client config
  • [CELEBORN-2146] Setting the DFS replication factor for balanced fault tolerance and storage efficiency
  • [CELEBORN-2149] Remove the deprecated ReleaseSlots
  • [CELEBORN-2150] Fix the match condition in checkIfWorkingDirCleaned
  • [CELEBORN-2152] Support merge buffers on the worker side to improve memory utilization
  • [CELEBORN-2153] Fix NPE problem that occurs during concurrent merge
  • [CELEBORN-2154] Optimize the exception handling of DFS read to avoid tasks from getting stuck
  • [CELEBORN-2155] Avoid using duplicate diskFileInfoMap functions
  • [CELEBORN-2157][CIP-14] Support sending RegisterShuffle/Revive/MapperEnd messages for NettyRpcEndpointRef in cppClient
  • [CELEBORN-2159] Fix dfs storage type check in StorageManager#cleanupExpiredShuffleKey
  • [CELEBORN-2160] Speedup CommitHandler.finishMapperAttempt
  • [CELEBORN-2161] Support DB delete failure policy
  • [CELEBORN-2162] Suppress client side connection error logging
  • [CELEBORN-2163] PushDataHandler should increment WriteDataFailCount for file writer exception of MapPartition PushData
  • [CELEBORN-2164] Fix incorrect filtering conditions in updateDiskInfos
  • [CELEBORN-2165] Fix endless swagger openapi.json security items
  • [CELEBORN-2166] Fast fail reduce stage if shuffle data is lost because of worker lost
  • [CELEBORN-2167] Bump Spark from 3.5.6 to 3.5.7
  • [CELEBORN-2168] Bump Flink from 1.20.2 to 1.20.3
  • [CELEBORN-2169][CIP-14] Support ConcurrentHashMap and refactor reducerFileGroupInfos
  • [CELEBORN-2170] Refactor ByteBuffer's readToReadOnlyBuffer interface
  • [CELEBORN-2171] Fix array index error in submitRetryPushMergedData
  • [CELEBORN-2173] jersey-test-framework-core dependency should exclude junit5 dependencies to execute java test cases for CI
  • [CELEBORN-2176] Fix uncaught exception in DataPusher
  • [CELEBORN-2178] Close hadoopFs FileSystem for stopping master
  • [CELEBORN-2180] Fix Invalid RequestId during RegisterApplicationInfo
  • [CELEBORN-2181] Modify the shuffleAllocations order in the disk info log
  • [CELEBORN-2182][CIP-14] Support PushState and PushStrategy in CppClient
  • [CELEBORN-2184] Introduce AvailableReadBuffer metric to monitor available memory for credit stream read buffer
  • [CELEBORN-2185] Support native kqueue transport on BSD/MacOS
  • [CELEBORN-2186] Add correctness related section to bug report and PR templates
  • [CELEBORN-2188] Abort multipart upload for S3 and OSS in DfsTierWriter#handleException
  • [CELEBORN-2189] Allow config worker pod terminationGracePeriodSeconds in chart
  • [CELEBORN-2192] ReadBufferDispatcher should add timeout constraints to fast fail in case of timeout
  • [CELEBORN-2193] Bump Flink from 2.0.0, 2.1.0 to 2.0.1, 2.1.1
  • [CELEBORN-2194] Change default value of celeborn.worker.directMemoryRatioForReadBuffer
  • [CELEBORN-2195] Align log4j2.xml and metrics.properties of charts with templates
  • [CELEBORN-2196][CIP-14] Support ReviveManager in CppClient
  • [CELEBORN-2198] Fix NPE in tryWithTimeoutAndCallback test due to lazy deviceCheckThreadPool not initialized
  • [CELEBORN-2200] Throw IOException when compressed data header corrupted
  • [CELEBORN-2202] Add configmap checksum to the statefulset annotation
  • [CELEBORN-2203] Set celeborn.master.internal.endpoints in the configmap
  • [CELEBORN-2205] Introduce metrics to fetch chunk for memory and local disk
  • [CELEBORN-2206][CIP-14] Support PushDataCallback in CppClient
  • [CELEBORN-2207] Master StatefulSet should add ratis-log4j.properties for ratis shell
  • [CELEBORN-2208] Log the partition reader wait time if exceeds the threshold
  • [CELEBORN-2209] Introduce ReadBufferUsageRatio metric to monitor credit stream read buffer usage
  • [CELEBORN-2210] When a flushBuffer consolidation OOM exception occurs
  • [CELEBORN-2211] Avoid allocating additional buffers When HdfsFlushTask writes data
  • [CELEBORN-2212] Optimize the sorting efficiency of memoryWriters when evicting the largest memory file
  • [CELEBORN-2214] Add extraInitContainers for worker in helm
  • [CELEBORN-2217] Use a separate thread to handle RpcEndpointVerifier messages
  • [CELEBORN-2218] Bump lz4-java version from 1.8.0 to 1.10.4 to resolve CVE-2025-12183 and CVE-2025-66566
  • [CELEBORN-2221][CIP-14] Support writing with compression in C++ client
  • [CELEBORN-2222][CIP-14] Support Retrying when createReader failed for CelebornInputStream in CppClient
  • [CELEBORN-2226][CIP-14] Support RetryFetchChunk functionality for CelebornInputStream
  • [CELEBORN-2229][CIP-14] Add support for celeborn.client.push.maxBytesSizeInFlight in CppClient
  • [CELEBORN-2231] Upgrade jersey version to 2.47 to fix CVE-2025-12383
  • [CELEBORN-2234] Bump jetty version to 9.4.58.v20250814 to fix GHSA-qh8g-58pp-2wxh
  • [CELEBORN-2235][CIP-14] Adapt Java end's serialization to CppWriterClient
  • [CELEBORN-2236] Avoiding regular expressions for DiskFileInfo storage type determination
  • [CELEBORN-2237] Support Flink 2.2
  • [CELEBORN-2238] Fix RuntimeException during stream cleanup preventing peer failover
  • [CELEBORN-2239] Support Spark 4.1
  • [CELEBORN-2240] Adapt to SPARK-51756 which add a new parameter checksumValue in MapStatus.apply
  • [CELEBORN-2243] During the close phase of hashWriter, pushData and mergeData are sent in parallel
  • [CELEBORN-2245] Bump maven 3.9.12
  • [CELEBORN-2248] Implement lazy loading for columnar shuffle classes and skew shuffle method using static holder pattern
  • [CELEBORN-2249] Bump Spark from 3.5.7 to 3.5.8
  • [CELEBORN-2250] Fix lock contention in ReducePartitionCommitHandler.finishMapperAttempt via fine-grained locks
  • [CELEBORN-2251] Introducing a shim layer and a common-tiered submodule for Flink clients
  • [CELEBORN-2254] Fix support for S3 and add a simple integration test
  • [CELEBORN-2256] Helm chart: add support for setting annotations on the service account (to support eks.amazonaws.com/role-arn)
  • [CELEBORN-2258] Bump Netty version from 4.1.118.Final to 4.2.10.Final
  • [CELEBORN-2259] The S3MultipartUploadHandler uses fs.s3a.aws.credentials.provider
  • [CELEBORN-2262] Prepare S3 directory only once and cache s3 client for MultiPartUploader
  • [CELEBORN-2263] Fix IndexOutOfBoundsException while reading from S3
  • [CELEBORN-2265] Do not waste resources on hotpath for debug logging in HashBasedShuffleWriter and SortBasedShuffleWriter
  • [CELEBORN-2266] Modernize Protobuf CMake usage and add install rules
  • [CELEBORN-2267][FOLLOWUP] Add Cpp-Write Java-Read integration tests for LZ4 and ZSTD
  • [CELEBORN-2268] Improve test coverage for MEMORY and S3 storage
  • [CELEBORN-2269] Update Cpp TransportClient to resolve hostnames via DNS
  • [CELEBORN-2270] Fix problem with eviction to tiered storage during partition split
  • [CELEBORN-2271] StorageManager#saveCommittedFileInfosExecutor should call shutdown before awaitTermination
  • [CELEBORN-2272] Add LZ4TPCDSDataBenchmark
  • [CELEBORN-2273] Fix cache mutation in TagsManager.getTaggedWorkers()
  • [CELEBORN-2278] Make HTTP auth bypass API paths configurable
  • [CELEBORN-2279] Update log level from INFO to ERROR for console output in spark-it tests
  • [CELEBORN-2280] Support celeborn.network.memory.allocator.type to specify netty memory allocator
  • [CELEBORN-2281] Improve error logging and null checks in CreditStreamManager

Credits

Thanks to the following contributors who helped to review and commit to Apache Celeborn 0.7.0 version:

Contributors
1fanwang afterincomparableyum Alibaba-HZY Amandeep Singh Aravind Patnam Chao Sun
Cheng Pan Dzeri96 Enrico Olivelli ewoodbury Fei Wang Filip Darmanovic
gavin9402 He Zhao James Xu jaystarshot Jiaming Xie Jraaay
Kalvin2077 Kartikay Bhutani Mridul Muralidharan Nicholas Jiang pingzh pithecuse527
pltbkd r7raul1984 Sanskar Modi Saurabh Dubey senthh Shaoyun Chen
taowenjun Venkata Krishnan Sowrirajan wang-haihua Yajun Gao yew1eb Yuriy Malygin
Zemin Piao Zhaohui Xu Zhengqi Zhang