All notable changes to this project will be documented in this file.
- Lock Contention Resolution: Allow resuming clients to immediately release upload locks held by stalled upload requests via
HEADrequests. Supports both single-instance and multi-replica/Kubernetes deployments without breaking backward compatibility of the locking interfaces. - File Deduplication by Hash: Implemented optional, space-saving duplicate file detection and linking based on file checksums.
- Added
withUploadDeduplication(boolean)builder method onTusFileUploadService(default:falsefor backward compatibility). - Introduced index system under
<storagePath>/checksums/<algorithm>/<checksum_value>for mapping file checksums to their original completed upload IDs. - Implemented safe read-only recursion in
DiskStorageServicefor child uploads: read operations (getUploadedBytes,copyUploadTo) recursively resolve to the parent upload, while write/truncate operations (append,removeLastNumberOfBytes) remain strictly bounded to the child ID to avoid accidental parent modifications. - Added parent-child expiration coordination: parent upload's expiration timestamp is automatically updated to be greater than or equal to any linked child upload's expiration.
- Self-cleaning index system: dangling index entries resulting from parent deletion/expiration are automatically detected and removed on the fly.
- Added new
duplicatesUploadId,checksum, andchecksumAlgorithmfields toUploadInfo.
- Added
- Backward Compatibility: Explicitly declared
serialVersionUID = -8751200491586638308LinsideUploadInfoto prevent serialization version mismatches for pre-existing upload data on disk. - Deduplication of Parsing Logic: Introduced
Utils.ChecksumInfoandUtils.parseUploadChecksumHeaderto completely centralize header validation and parsing.