Skip to content

v1.4.0

Latest

Choose a tag to compare

@jiefenghuang jiefenghuang released this 06 Jul 08:41

This is the fifth major release of JuiceFS, and is an LTS version as well that will be maintained for 24 months.
Since v1.3.0 it has 520 commits from 57 contributors, thanks to @jiefenghuang @zhijian-pro @Xuyuchao-juice @zxh326 @YunhuiChen @polyrabbit @solracsf @chenjie4255 @CaitinChen @yuhr123 @davies @Looka149 @201341 @zhoucheng361 @cxljs @tangyoupeng @wzhallright @Light-City @JoyLiuc @mdolr @simpleqin @qingketsing @timfeirg @prOOrc @eakman-datadog @mt5225 @sw-cho @T-TRz879 @wsq77-ws @Niennienzz @vyalamar @lynus @zhitaoli-6 @VerTiGoEtrex @mwkang @lesterMing @asyqm @kyungwan-nam @ndeepak-baseten @zexee @hegdeadithyak @anthonyeleven @kungf @CodingPoeta @rifeplight @Joffref @mcassaniti @nautaa @juchaosong @krmeda-msft @yangliping @leoliulei @cuiweixie @qingzhongli @CodeRusher @sjp00556 @mzygQAQ

Highlights

New

Changed

Important

  • meta/backup: delete backups older than two years (#6484)
  • meta: commit new chunks in write order (#7016)
  • meta: speed up background trash cleanup job (#6602)
  • meta/badger: improve reliability and resource management (#6725)
  • meta/kv: do lookup in a single transaction (#7039,#7047)
  • meta: avoid creating massive kv tombstones for quota keys that were never set (#7142)
  • meta: replace bulk doReaddir with batched DirHandler in cloneEntry to reduce memory pressure on large directories (#6469)
  • meta/sql: batch chunk_ref updates to reduce SQL round-trips (#7018)
  • meta/sql: change setting.Value from varchar(4096) to text (#7152)
  • fs: return sorted entries when sort-dir is true (#6442, #6468)
  • cache: speed up scanning (#6549, #6528, #6557, #6994)
  • cache/stage: reduce the priority of the stage cache by introducing a cooldown period (#6435)
  • cache: use partial reads when cache is disabled to halve read amplification (#6364)
  • chunk: scale prefetcher pending buffer with worker count (#7059)
  • fs: add permission check for BatchDeleteEntries (#7083)
  • fuse: return immediately if readdir failed in ReadDirPlus (#7062)
  • cmd/mount: warn when both readdir-cache and skip-dir-mtime are enabled as they may conflict (#6209)
  • cmd/mount: warn when negative-entry-cache is used on kernels below 5.11 to avoid concurrent mkdir failures (#6302)
  • cmd/mount: improve mount process kill and diagnostics (#6998, #7034)
  • cmd/mount: check explicit cancel before duration (#7061)
  • cmd/sync: limit cached directory entries number per level to reduce memory usage (#6652)
  • cmd/sync: reduce the number of concurrent large files (#6341,#6372)
  • cmd/sync: set umask in sync cluster mode to preserve correct file permissions (#6400)
  • cmd/sync: only retry temporary failures (#6132)
  • cmd/sync: skip non-existent paths in files-from list instead of failing (#6339)
  • cmd/sync: skip empty keys to prevent errors from blank entries (#6193)
  • cmd/sync: rename sync temporary files to ".jfs.xxx.tmp.xxx" (#6665)
  • cmd/sync: warn and skip non-regular files during entry listing (#6954)
  • cmd/sync: enhance symlink handling (#7030) (#7121)
  • cmd/sync: improve sync log (#6623) (#7116)
  • cmd/sync: improve usage description for update flag (#7169)
  • cmd/gateway: improve performance for batch deletion of objects (#6605,#7078)
  • cmd/gateway: reduce memory for list objects (#6476)
  • cmd/gateway: add ETag verification in multi-part upload completion for data integrity (#6485)
  • cmd/gateway: add descriptive error messages for bucket name validation failures (#6773)
  • cmd/restore: improve restore progress labels and conflict description (#6888)
  • cmd/gc: allow listed objects without size and mtime (#7063)
  • cmd: use %q for CLI-derived strings in logs (#6804)
  • cmd: add adaptive sleep time to read response (#6526)
  • object/oss: support oss private link endpoint (#6686)
  • object/oss: support switching signature version v1 (#6631)
  • object/s3: limit the maximum number for list operations to 1000 (#6367)
  • object/bos: remove redundant data validation from Put interface, already covered by SDK (#6904)
  • object/wasb: support SAS token authentication via --session-token (#6926)
  • object/ceph: add env JFS_OBJECT_NO_ORDER for faster listing (#7119, #7122)
  • object: add API to check whether a storage is supported (#6559) (#7115)
  • object: add object.Sys() interface (#6825) (#7118)
  • object: add context parameter to Head method in DefaultObjectStorage (#7140)
  • sdk/java: exclude gspt from libjfs.so to prevent Java process argv truncation on Linux (#6726)
  • sdk: support fully closing filesystem on delete (#6939)
  • utils: export LogHandle (#7005) (#7120)
  • build: support make debug mode in makefile (#6573)
  • build: reduce size of lite version (#7017)
  • monitor: merge grafana dashboards with node_label variable (#6492)

Bug Fixes

  • fuse: disable readdir-cache for special inodes like .trash to avoid showing stale entries (#6690)
  • vfs: remove O_TMPFILE file directly when closed (#6464)
  • meta/redis: fix potential deadlock when rename triggers checkTrash with nested transactions (#6558)
  • meta/redis: close standalone client after cluster mode detection (#6948)
  • meta/redis: fix duplicative prefix and loop counter (#7154)
  • meta/kv: fix potential data corruption issues caused by clock diff and TiKV gc (#6217)
  • meta/kv: avoid repeatedly setting the same key which can lead to excessive memory usage in CopyFileRange (#6449)
  • meta/sql: fix tx_isolation setting error for MySQL <= 5.7 (#6768)
  • meta/sql: avoid premature delfile marker removal (#7093)
  • meta/sql: retry transaction for serialization failure (#7128, #7180)
  • meta/badger: run simpleTxn as read-only transaction (#7173)
  • meta: fix format decrypt error when uuid changed (#6542)
  • meta: fix stale cache of the overwritten file in rename (#6893)
  • meta: fix GetDirStat returning stale inodes count before flush (#6886)
  • meta: fix group check when setting the setgid bit (#6943)
  • meta: fix escaping when the original string contains spaces (#7159)
  • meta: fix quota flush race (#7181)
  • meta: fix progress bar goroutine leak (#7224,#7225)
  • meta: fix openfiles cleanup goroutine leak on Shutdown (#7208)
  • meta/kv: fix entries skipped by readdir during concurrent deletion (#7226)
  • cache: fix disk cache full checking logic (#6675)
  • cache/stage: fix duplicate upload of staged blocks (#6697)
  • cache/stage: fix potential EIO when reading stage blocks (#6388)
  • cache/stage: fix free stage blocks check when disk full (#7056)
  • cache: fix cache-items option description and log (#6252)
  • cmd/mount: add nofail to fstab mount options to improve mount reliability (#6280)
  • cmd/mount: fix fstab option parsing that dropped parameter values like attr-cache=1 to attr-cache (#6420)
  • cmd/mount: disable shared metrics reporting when no-bgjob is set (#6530)
  • cmd/mount: fix FUSE fd leaking into child process (#7162, #7161)
  • cmd/sync: fix failed object count (#6533)
  • cmd/sync: fix metrics for excluded and extra objects (#6863)
  • cmd/sync: fix lost count in summary log (#6928)
  • cmd/sync: keep files-from symlink dirs as links (#7050)
  • cmd/sync: fix --limit budget and extra-dst handling, clean up checkpoint on DeleteDst (#7195)
  • cmd/sync: avoid print the secret key in the log (#7191)
  • cmd/gateway: fix infinite loop in config handling (#7037)
  • cmd/gateway: prevent panic on invalid uploadID (#7051)
  • cmd/gateway: head file/ should always fail (#7064)
  • cmd/config: fix bug where --bucket is treated as local path when --storage is not explicitly set (#6710)
  • cmd/fsck: fix repair to set directory permissions to 0755
  • cmd/info: fix tail empty slice in output (#6832)
  • cmd/destroy: allow destroy with --force to ignore missing bucket (#6767)
  • cmd/gateway: fix incorrect object name assignment in getObjectInfoNoFSLock (#6493)
  • cmd/objbench: fix incorrect mtime check log message in list results (#6490)
  • cmd: use a dedicated ServeMux to avoid exposing pprof/metrics (#7214)
  • sdk/python: load platform-specific libjfs extension (#6967)
  • sdk: close file handle in jfs_chown to prevent fd leak (#6965)
  • sdk: fix close session handling (#6977)
  • sdk/java: fix flags when reload (#7082)
  • sdk/java: fix resource leaks, ancestor lookup, and null checks (#6964,#6961,#6960)
  • sdk/java: convert delegation token issue/max timestamps to milliseconds in getDelegationToken (#7113)
  • sdk/python: fix tests folder being packaged (#7067)
  • sdk: fix accesslog dead loop (#7065)
  • object: fix client dial delay and prefer ipv6 (#6753)
  • object/bos: fix endpoint format for bucket (#6746)
  • object/s3: use default credential chain in autoS3Region when accessKey is empty (#6754)
  • object/azure: handle nil ArchiveStatus to prevent panic (#6843)
  • object/s3: pass session token to region auto-detection for STS support (#6946)
  • object/minio: fix MinIO object storage info printing to remove duplicated bucket name in path (#6310)
  • object: decode S3 object listing responses based on the encoding type returned by server (#6532)
  • object/oss: avoid passing empty token (#6446) (#7114)
  • object/ceph: remove the check of JFS_NO_CHECK_OBJECT_STORAGE env (#6742) (#7117)
  • object: nil-guard pointer fields in S3-family responses (#7133)
  • object: fix S3 configuration with default checksum options (#7172)
  • log: fix log in SelfCheck bandwidth warning (#7057)
  • log: fix typo 'boudary' in WriteAt error message (#7058)
  • log: fix compactChunk error log (#7198)

Deps

  • deps: upgrade pgx/v5 from 5.7.3 to 5.9.2 (#6963)
  • deps: upgrade ibm-cos-sdk-go from v1.12.1 to v1.13.0 (#6851)
  • deps: upgrade qingstor sdk from v4.4.0 to v4.4.1 (#6855)
  • deps: upgrade bunny sdk from v0.0.10 to v1.0.0 (#6848)
  • deps: upgrade bce sdk from v0.9.221 to v0.9.263 (#6847)
  • deps: upgrade azure sdk from v1.3.1 to v1.6.4 (#6842)
  • deps: upgrade tos sdk from v2.7.8 to v2.9.0 (#6840)
  • deps: upgrade cos sdk from v0.7.63 to v0.7.73 (#6837)
  • deps: upgrade oss sdk from v1.2.1 to v1.4.1 (#6836)
  • deps: update go-fuse to fix flock (#6778)
  • deps: bump gmsm to v0.41.1 (#6775)
  • deps: update go version to 1.25 (#6303, #6680, #6862)
  • deps: upgrade aws-sdk-go-v2 from v1.36.1 to v1.41.5 (#6883)
  • deps: upgrade dgraph-io/badger to v4.9.1 (#6879)
  • deps: upgrade go-sql-driver/mysql to v1.9.3 (#6878)
  • deps: upgrade redis sdk from v9.16.0 to v9.18.0 (#6871)
  • deps: upgrade sftp sdk from v1.13.5 to v1.13.10 (#6868)
  • deps: upgrade qiniu sdk from v7.25.2 to v7.26.8 (#6861)