mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-27 15:37:02 +00:00
fix(ci): evaluate ILM every scanner cycle in lifecycle behavior lane (#4772)
The s3-tests lifecycle expiration cases (test_lifecycle_expiration, test_lifecyclev2_expiration, test_lifecycle_deletemarker_expiration) flaked with counts stalling one plateau behind (e.g. `assert 6 == 4`). Root cause: a compacted directory is only re-descended -- and its objects re-evaluated against ILM rules -- once every DATA_USAGE_UPDATE_DIR_CYCLES scanner cycles (default 16). At the lane's accelerated RUSTFS_SCANNER_CYCLE=2 that is ~32s between evaluations, so a Days=1 object due at debug_day (10s) is not actually expired until the next ~32s boundary (~42s) -- just past the test's 4*lc_interval (40s) poll window, so the list still returns the pre-expiry count. Set RUSTFS_DATA_USAGE_UPDATE_DIR_CYCLES=1 for this debug-only lane so compacted directories are re-descended every cycle and ILM fires within ~2s of the due time, comfortably inside the poll window. This does not touch the 4*lc_interval < 5*debug_day plateau invariant.
This commit is contained in:
@@ -550,6 +550,15 @@ jobs:
|
|||||||
# the intermediate 4-object plateau requires 4*lc_interval < 5*debug_day, i.e.
|
# the intermediate 4-object plateau requires 4*lc_interval < 5*debug_day, i.e.
|
||||||
# debug_day > 8. A smaller value lets the Days=5 rule fire inside the Days=1
|
# debug_day > 8. A smaller value lets the Days=5 rule fire inside the Days=1
|
||||||
# poll window so the count collapses straight to 2 and the test fails (#4764).
|
# poll window so the count collapses straight to 2 and the test fails (#4764).
|
||||||
|
#
|
||||||
|
# RUSTFS_DATA_USAGE_UPDATE_DIR_CYCLES=1 is also required. A compacted directory
|
||||||
|
# is only re-descended (and its objects re-evaluated for ILM) once every
|
||||||
|
# DATA_USAGE_UPDATE_DIR_CYCLES scanner cycles (default 16). At the accelerated
|
||||||
|
# RUSTFS_SCANNER_CYCLE=2 that is ~32s between evaluations, so a Days=1 object
|
||||||
|
# that becomes due at debug_day (10s) is not actually expired until the next
|
||||||
|
# ~32s boundary (~42s), landing just past the 4*lc_interval (40s) poll window
|
||||||
|
# and making the count stall at 6 (#4767). Forcing every-cycle re-descent
|
||||||
|
# evaluates ILM within ~2s of the due time, well inside the poll window.
|
||||||
s3-lifecycle-behavior-tests:
|
s3-lifecycle-behavior-tests:
|
||||||
name: S3 Lifecycle Behavior Tests
|
name: S3 Lifecycle Behavior Tests
|
||||||
needs: [ build-rustfs-debug-binary ]
|
needs: [ build-rustfs-debug-binary ]
|
||||||
@@ -583,6 +592,7 @@ jobs:
|
|||||||
RUSTFS_ILM_PROCESS_TIME=1 \
|
RUSTFS_ILM_PROCESS_TIME=1 \
|
||||||
RUSTFS_SCANNER_ENABLED=true \
|
RUSTFS_SCANNER_ENABLED=true \
|
||||||
RUSTFS_SCANNER_CYCLE=2 \
|
RUSTFS_SCANNER_CYCLE=2 \
|
||||||
|
RUSTFS_DATA_USAGE_UPDATE_DIR_CYCLES=1 \
|
||||||
RUSTFS_SCANNER_START_DELAY_SECS=0 \
|
RUSTFS_SCANNER_START_DELAY_SECS=0 \
|
||||||
RUSTFS_API_STALE_UPLOADS_CLEANUP_INTERVAL=2s \
|
RUSTFS_API_STALE_UPLOADS_CLEANUP_INTERVAL=2s \
|
||||||
S3_PORT="${S3_PORT}" \
|
S3_PORT="${S3_PORT}" \
|
||||||
|
|||||||
Reference in New Issue
Block a user