Skip to content

v1.3.0-beta1

Pre-release
Pre-release
Compare
Choose a tag to compare
@jiefenghuang jiefenghuang released this 22 Apr 11:09

This is the first beta release for JuiceFS v1.3. Since v1.2 it has 556 commits from 49 contributors, thanks to
@zhijian-pro @jiefenghuang @polyrabbit @chenjie4255 @davies @YunhuiChen @CaitinChen @CodingPoeta @Xuyuchao-juice @tangyoupeng @SandyXSD @anysql @xiaogaozi @yuhr123 @Suave @timfeirg @kyungwan-nam @zxh326 @winglq @williamstein @zwwhdls @JoyLiuc @Looka149 @dsd2077 @ddrid @daimashusheng @wzhallright @yetone @wpleonardo @201341 @taadis @shenxingwuying @mt5225 @prOOrc @servusdei2018 @myron369 @maxjustus @lianneli @davidzhangbj @hawkli-1994 @YinhaoHu @bitsark @solracsf @fukua95 @DASWU @SonglinLife @chnliyong @achetronic !

Highlights

New

  • fuse: add --async_dio option to enable asynchronous handling of direct I/O (#4943,#4986)
  • fuse: add --max-fuse-io option to config max write size for request (#5087,#6017)
  • fuse: add timeout for FUSE requests (#5670,#5681,#5690)
  • fuse: enable kernel symlink cache (#5766)
  • fuse: support /dev/fd/N mount point for --fusemount (#5076,#5082,#5976)
  • cmd/mount: add max-readahead option to set the max readahead buffer (#5225,#5229,#5704)
  • cmd/mount: add --sort-dir option to sort entries by name within a directory (#5031)
  • cmd/mount: add readdir-cache option to enable kernel caching readdir entries (#5462)
  • cmd/mount: add negative-entry-cache option to allow kernel caching negative dir entry lookups (#5788,#6038)
  • cmd/mount: add cache-large-write option to cache blocks after uploading (#5261)
  • cmd/mount: add cache-items option to limit number of cache items (#5489,#5495)
  • cmd/mount: add check-storage option to perform object storage test at startup (#5281)
  • cmd/mount: add enable-cap and enable-selinux options to enable corresponding xattr requests (#5406,#5962)
  • cmd/mount: add all-squash option to map all users to a specified one (#5395)
  • cmd/mount: add umask option to overwrite the one from app (#5756,#5942)
  • cmd/mount: supervisor process pass signal to service process (#5238,#5245,#5246,#5278,#5624)
  • vfs: support O_TMPFILE flag (#5309,#5433)
  • meta: support readdir streaming (#5162,#5207,#5223,#5242,#5482,#5504,#5895)
  • meta/sql: support multiple volumes sharing a single db (#5791,#5804)
  • cache: add env JFS_DROP_OSCACHE to enable dropping page cache (#4981)
  • cmd/format: support TLS configuration via bucket URL parameters (#5241)
  • cmd/sync: add max-failure option to abort on error threshold (#5142)
  • cmd/quota: add --create option to create directory if not exists (#5196)
  • cmd/rmr: add skip-trash option to delete files directly (#5384,#5818)
  • cmd: add threads option for rmr tool, webdav, gateway and libjfs to delete files (#5522,#5535)
  • cmd/gateway: add object-meta option to enable object metadata api (#5536)
  • cmd/sync: add files-from option to specify the list of files or directories to sync (#5639,#5864,#5894)
  • cmd/objbench: add shards to support object storage shards (#5755)
  • cmd/dump&load: support zstd compression (#4921)
  • cmd/webdav: support PROPPATCH method (#5041)

Changed

  • vfs: limit buffer usage for read requests (#5557)
  • meta: improve statfs performance (#5161)
  • meta/kv: improve mknod performance via batch get (#5056)
  • meta: improve performance via inode prefetching. (#5130,#5481)
  • meta: reduce GetAttr calls (#5540)
  • meta/kv: improve scan performance and robustness (#5298,#5314,#5080)
  • meta/sql: improve performance by simplifying transaction and reducing locks (#5377,#5460)
  • meta/sql: set default transaction isolation level to repeatable-read (#5432,#5456)
  • meta: optimizations for reducing transaction conflicts (#5308,#5330,#5574)
  • meta/sql: support more connection options (#5512,#5806)
  • meta/redis: support tls server name configuration (#5182)
  • meta: adjust the interval to one hour for deleted files cleanup (#5343)
  • meta: cancel background tasks when closing session (#5486,#5613,#5943,#5986)
  • cache: inherit atime and track logic size when re-scan (#5692)
  • cache: adjust cache capacity and max items by freeratio (#5970)
  • cmd/mount: the upload-hours option allow using - as a separator (#5494)
  • object: upgrade aws sdk to v2 (#5968,#5987,#5992)
  • object: remove object storage support for scs, jss, upyun (#5972, #5975, #5974)
  • object: improve list performance via v2 API (#5250,#5393,#5434)
  • object/gs: improve gs performance by using client pool (#5020)
  • object/nfs: improve Readdir performance by increasing batch size (#5689)
  • object/minio: support REDUCED_REDUNDANCY storage class for MinIO (#5413)
  • object/sftp: supports verification of known hosts (#5581)
  • object/bos: reduce memory allocation in bos (#5657)
  • object/bos: support crc32 check (#5883)
  • hadoop: support skipNBytes (#5028)
  • cmd/gateway: add one more hierarchy to temporary multipart dir to reduce transaction conflicts (#5549)
  • cmd/gateway: some performance optimizations (#5163,#5548,#5544)
  • cmd/sync: support more environment variables in cluster mode (#5364,#5422)
  • cmd/sync: improve performance by calculating checksum in flight to reduce redundant reads from the source (#5524)
  • cmd/warmup: accelerate big file warmup (#5713,#5886,#5897)
  • cmd/warmup: improve performance by reducing file operations (#5408)
  • cmd/warmup: show cache location info (#5559)
  • cmd/fsck: support recalculating used space and inodes (#5331,#6036)
  • cmd/restore: output restored dirs and stats (#5380)
  • cmd/gc: use MaxDeletes as remove concurrency (#5532)
  • cmd/backup: use multipart upload to transfer large backup files (#5564)
  • cmd/stats: add timestamp info and count option (#5528)
  • cmd/debug: collect more detailed information about goroutines (#5656)
  • cmd/gc: improve scanning performance for pending-deletion files (#5683)
  • metrics: update grafana dashboard (#4980,#5248)
  • metrics: add method label for transaction conflicts (#5762)
  • metrics: add total_inodes and total_space metrics (#5424)

Bugfix

  • vfs: remove object files if metadata commit fails with ENOENT (#5133)
  • vfs: allow ftruncate on an opened and deleted file (#5664)
  • meta: fix the issue that trash files may be dangling (#5414)
  • meta: evict symlink cache periodically (#5131)
  • meta: fix permission check of open and mknod (#4948)
  • meta: fix volume stats update issues (#4979,#5221,#5272,#5280,#5303,#5305)
  • meta: fix the issue that the username cannot contain the "@" character (#5761)
  • meta: fix potential issues with context reuse (#5372,#5665)
  • meta/sql: fix nanosecond of link and readlink (#5496)
  • meta/sql: fix sqlite3 "database is locked" issue (#5586)
  • meta/sql: fix flush quotas and stats deadlock (#5706,#5712)
  • meta/sql: fix database retry issues (#5440,#5485)
  • meta/sql: fix concurrency issue in json backup dump (#5930)
  • meta/redis: fix potential loss of attributes issue (#5709)
  • meta/redis: check MGet error to avoid panic (#5773)
  • chunk: remove unexpected read retries (#5199)
  • chunk: deduplicate prefetch/partial-block/full-block requests to avoid read amplification (#4947#5219)
  • cache/stage: retry uploading stage blocks upon disk read failures (#5084)
  • cache/stage: add stage write timeout with object storage fallback to prevent hangs (#5230,#5563,#5575)
  • cache: disable writeback during compaction to prevent EIO from multi-client races (#5767)
  • cache: maintain a margin based on the free-space ratio during cleanup to prevent client interference (#5216)
  • cache: fix inoperative --cache-expire option in memory cache (#5313)
  • cache: fix cache duplication issue caused by concurrency (#5623)
  • cache: fix potential high latency caused by locks in getDiskUsage (#5857)
  • cmd/mount: fix process management issues (#5064,#5172,#5641,#5881)
  • cmd/mount: fix potential hangs during stack trace collection by adding timeout (#5325)
  • cmd/mount: support using ":" to separate multiple cache-dir in fstab (#5719)
  • cmd/mount: fix the mount path to an absolute path in fstab (#5951)
  • cmd/debug: fix potential hangs by adding timeout (#5050,#5627)
  • cmd/sync: fix command-line interaction issues (#5138,#5744,#5752)
  • cmd/sync: fix parallel list issues (#5645,#5646)
  • cmd/sync: fix statistical issues (#5658,#5763)
  • cmd/sync: fix manager ip issues (#5597,#5950,#5947)
  • cmd/sync: ignore special files of JuiceFS (#5523)
  • cmd/sync: fix leaked directories issue (#5705,#5777,#5787)
  • cmd/sync: fix missing error log for worker process (#5362)
  • cmd/sync: use a dedicated buffer pool to avoid contention with writes (#5568)
  • cmd/sync: fix the issue that worker might get an outdated binary. (#5899)
  • cmd/sync: fix check-all in cluster mode (#5904)
  • cmd/sync: fix uneven task distribution among workers. (#5957)
  • cmd/sync: return error if uid or gid cannot be found (#5995)
  • cmd/gateway: fix missing memory buffer usage metrics (#5560)
  • cmd/gateway: fix potential etag inconsistency caused by concurrency (#5258,#5378)
  • cmd/gateway: fix some compatibility issues (#6004,#6006)
  • cmd/gateway: fix some panic issues (#5098, #5164,#5807)
  • cmd/clone: skip trash files (#5109)
  • cmd/gc: fix misclassification of pending-delete objects as leaked (#5198)
  • cmd/config: fix bucket update issue (#5653)
  • cmd/objbench: fix time and size statistics (#5264,#5267)
  • cmd/warmup: fix handling files with holes (#6034)
  • object/ks3: check endpoint format to avoid panic (#5074)
  • object/s3: fix long timeout issue when AWS IMDSv2 is disabled (#5231)
  • object/bos: disable retry in bos (#5644)
  • object/jfs: fix file creation logic (#5792)
  • hadoop: fix juicefs.umask does not work (#5337)
  • hadoop: fix background task thread leak (#5363)
  • hadoop: fix HDFS command not displaying JuiceFS quota (#5939)
  • utils/cond: fix timer issue (#5631,#5634)
  • log: fix quote parsing issue in accesslog (#5588)
  • build: fix static linking for ARM64 binary (#5612)

Deps

  • deps: bump github.com/winfsp/cgofuse from v1.5.0 to v1.6.0 (#5840)
  • deps: bump MySQL driver github.com/go-sql-driver/mysql from v1.7.1(2023-04-25) to v1.9.1(2025-03-20) (#5834)
  • deps: bump PostgreSQL driver github.com/jackc/pgx/v5 from v5.5.4 to v5.7.3 (#5835)
  • deps: bump sqlite3 driver github.com/mattn/go-sqlite3 from v1.14.16 to v1.14.24 (#5555)
  • deps: bump BadgerDB github.com/dgraph-io/badger/v4 from v4.2.0 to v4.5.1 (#5626)
  • deps: bump Redis client github.com/redis/go-redis/v9 from v9.0.2 to v9.7.3 (#5832)
  • deps: bump TiKV SDK from v2.0.1 to v2.0.7 (#5850)
  • deps: bump baidu bce sdk from v0.9.200 to v0.9.221 (#5820)
  • deps: bump tencent cos sdk to v0.7.45 to v0.7.63 (#5821)
  • deps: bump volcengine tos sdk from v2.7.0 to v2.7.8 (#5838)
  • deps: change aliyun oss sdk to github.com/aliyun/alibabacloud-oss-go-sdk-v2 v1.2.1 (#5830,#5878)
  • deps: bump ks3 sdk from v1.2.2 to v1.6.0 (#5829)
  • deps: bump ibm cos sdk from v1.10.0 to v1.12.1 (#5828)
  • deps: bump qiniu sdk from v7.15.0 to v7.25.2 (#5831)
  • deps: bump gs sdk from v1.28.1(2022-12-02) to v1.48.0(2024-12-05) (#5849)
  • deps: bump azure sdk from v1.0.0 to 1.3.1 (#5819)
  • deps: bump github.com/ncw/swift/v2 from v2.0.1 to v2.0.3 (#5836)
  • deps: bump github.com/colinmarc/hdfs/v2 from v2.3.0 to v2.4.0 (#5827)
  • deps: bump github.com/studio-b12/gowebdav from 3282f94193f2(2023-02-04) to v0.10.0 (#5839)
  • deps: bump prometheus from v1.15.1 to v1.21.1 (#5843)
  • deps: bump github.com/goccy/go-json from v0.10.2 to v0.10.5 (#5841)
  • deps: bump github.com/grafana/pyroscope-go from v1.0.4 to v1.2.1 (#5842)
  • deps: bump golang.org/x/crypto from 0.21.0 to 0.31.0 (#5374)
  • deps: bump golang.org/x/net from v0.23.0 to v0.33.0 (#5412)
  • deps: bump github.com/DataDog/zstd from v1.5.0 to v1.5.6 (#5741)
  • deps: bump github.com/remyoudompheng/bigfft to latest version (#5747)
  • deps: bump go.uber.org/automaxprocs from v1.5.2 to v1.6.0 (#5844)