ILM Scenario 1 - allanrogerr/public GitHub Wiki

Setup

sudo timedatectl set-ntp no
sudo timedatectl set-time 2025-02-14
date

mc rb --force local0/scenario1
mc mb local0/scenario1
mc version enable local0/scenario1
mc anonymous set public local0/scenario1

curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k 
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k 
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k 
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k 
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k 
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k 
curl -X PUT https://127.0.0.1:9000/scenario1/v -d "test" -H "X-Minio-Source-Mtime: 2025-02-14T00:00:00-00:00" -k

mc ls --versions local0/scenario1
[2025-02-14 00:00:00 UTC]     4B STANDARD c4ca84a3-f0d3-4ffc-a811-31e3f04b0826 v8 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD bbc70eaa-5237-49a6-9f22-5c47b27d406e v7 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 85764e1c-0f12-4419-af8c-283719229f8b v6 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 7c849884-1c8c-43e0-ab38-6a5073575392 v5 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 8bf0bc32-e5b9-4b57-af41-f47cbbdf7b01 v4 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD bd257cae-87be-4e8b-a2eb-810cea4f5689 v3 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 4007f575-f06b-4ccc-886f-71d7849f78c6 v2 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 09820ed0-3865-4df4-a549-7c95391b3740 v1 PUT v

mc ilm rule ls local0/scenario1
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Expiration for latest version (Expiration)                                                                                      โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ ID                                                             โ”‚ STATUS  โ”‚ PREFIX โ”‚ TAGS โ”‚ DAYS TO EXPIRE โ”‚ EXPIRE DELETEMARKER โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ - the only NoncurrentVersionExpiration rule obeyed preserving  โ”‚ Enabled โ”‚ -      โ”‚ -    โ”‚              1 โ”‚ false               โ”‚
โ”‚ newest 3 noncurrent versions after 2 days have passed          โ”‚         โ”‚        โ”‚      โ”‚                โ”‚                     โ”‚
โ”‚ - expires the latest version after 1 day                       โ”‚         โ”‚        โ”‚      โ”‚                โ”‚                     โ”‚
โ”‚                                                                โ”‚         โ”‚        โ”‚      โ”‚                โ”‚                     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Expiration for older versions (NoncurrentVersionExpiration)                                                                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ ID                                                                          โ”‚ STATUS  โ”‚ PREFIX โ”‚ TAGS โ”‚ DAYS TO EXPIRE โ”‚ KEEP VERSIONS โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ - the only NoncurrentVersionExpiration rule obeyed preserving               โ”‚ Enabled โ”‚ -      โ”‚ -    โ”‚              2 โ”‚             3 โ”‚
โ”‚ newest 3 noncurrent versions after 2 days have passed                       โ”‚         โ”‚        โ”‚      โ”‚                โ”‚               โ”‚
โ”‚ - expires the latest version after 1 day                                    โ”‚         โ”‚        โ”‚      โ”‚                โ”‚               โ”‚
โ”‚                                                                             โ”‚         โ”‚        โ”‚      โ”‚                โ”‚               โ”‚
โ”‚ - immediately preserves the newest 4 noncurrent versions,                   โ”‚ Enabled โ”‚ -      โ”‚ -    โ”‚              0 โ”‚             4 โ”‚
โ”‚ however it is ignored since not the first rule with NewerNoncurrentVersions โ”‚         โ”‚        โ”‚      โ”‚                โ”‚               โ”‚
โ”‚                                                                             โ”‚         โ”‚        โ”‚      โ”‚                โ”‚               โ”‚
โ”‚ - delete all non current versions after 4 days                              โ”‚ Enabled โ”‚ -      โ”‚ -    โ”‚              4 โ”‚             0 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Observe NO trace

Move 1 day UTC into the future.

sudo timedatectl set-ntp no
sudo timedatectl set-time 2025-02-16

Observe ILM trace

2025-02-16T00:00:14.639 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 3.007016ms 4 B
mc ls --versions local0/scenario1
[2025-02-16 00:00:14 UTC]     0B STANDARD 1ae7aae1-27ea-492c-bcbe-36de15188377 v9 DEL v
[2025-02-14 00:00:00 UTC]     4B STANDARD c4ca84a3-f0d3-4ffc-a811-31e3f04b0826 v8 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD bbc70eaa-5237-49a6-9f22-5c47b27d406e v7 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 85764e1c-0f12-4419-af8c-283719229f8b v6 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 7c849884-1c8c-43e0-ab38-6a5073575392 v5 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 8bf0bc32-e5b9-4b57-af41-f47cbbdf7b01 v4 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD bd257cae-87be-4e8b-a2eb-810cea4f5689 v3 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 4007f575-f06b-4ccc-886f-71d7849f78c6 v2 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 09820ed0-3865-4df4-a549-7c95391b3740 v1 PUT v

Move 1 day UTC into the future.

sudo timedatectl set-ntp no
sudo timedatectl set-time 2025-02-17

Observe ILM trace

2025-02-17T00:04:51.746 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 26.962ยตs
2025-02-17T00:04:51.746 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 1.174ยตs
2025-02-17T00:04:51.746 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 1.668ยตs
2025-02-17T00:04:51.746 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 932ns
2025-02-17T00:04:51.746 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 758ns
mc ls --versions local0/scenario1
[2025-02-16 00:00:14 UTC]     0B STANDARD 1ae7aae1-27ea-492c-bcbe-36de15188377 v4 DEL v
[2025-02-14 00:00:00 UTC]     4B STANDARD c4ca84a3-f0d3-4ffc-a811-31e3f04b0826 v3 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD bbc70eaa-5237-49a6-9f22-5c47b27d406e v2 PUT v
[2025-02-14 00:00:00 UTC]     4B STANDARD 85764e1c-0f12-4419-af8c-283719229f8b v1 PUT v

Move 1 day UTC into the future.

sudo timedatectl set-ntp no
sudo timedatectl set-time 2025-02-18

Observe NO trace

Move 1 day UTC into the future.

sudo timedatectl set-ntp no
sudo timedatectl set-time 2025-02-19

Observe ILM trace

2025-02-19T00:08:45.082 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 3.013634ms 4 B
2025-02-19T00:08:45.085 [ILM] ilm:expiry 127.0.0.1:9000 scenario1/v 2.422437ms 4 B
mc ls --versions local0/scenario1
[2025-02-16 00:00:14 UTC]     0B STANDARD 1ae7aae1-27ea-492c-bcbe-36de15188377 v2 DEL v
[2025-02-14 00:00:00 UTC]     4B STANDARD c4ca84a3-f0d3-4ffc-a811-31e3f04b0826 v1 PUT v