I’m sure there’s another reason. Although what you wrote is also true, it does not apply in this particular case. Because the last of the processed BF for SLC on this node was created based on data BEFORE June 9 (more than a month ago), as can be seen from the logs above:
2024-07-07T14:37:09+03:00 INFO retain Prepared to run a Retain request. {"cachePath": "C:\\Program Files\\Storj\\Storage Node/retain", "Created Before": "2024-06-09T20:59:59+03:00", "Filter Size": 6918625, "Satellite ID": "1wFTAgs9DP5RSnCqKV1eLf6N9wtk4EAtmN5DpSxcs8EjT69tGE"}
Note - that latest big 17 MB filter for GC arrived only yesterday AFTER I noticed hundreds of thousands of erroneous requests to delete files that no longer exist by the TTL collector. So GC couldn’t remove anything before the TTL collector for SL. Simply because were no BF for SL for a log time.
So I think my first guess that the reason (or one of the reasons) is that the records of deleted TTL pieces are not being deleted properly from the database is correct.
This leads to massive repeated attempts to delete previously deleted files again.
To check this, today I opened and dumped the database piece_expiration.db
(by the way thanks for your tutorial of sqlite3 use for db repair, i just slightly modified it) and found several million already expired records in it
As I actually was expecting.
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE piece_expirations (
satellite_id BLOB NOT NULL,
piece_id BLOB NOT NULL,
piece_expiration TIMESTAMP NOT NULL, -- date when it can be deleted
deletion_failed_at TIMESTAMP, trash INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (satellite_id, piece_id)
);
INSERT INTO piece_expirations VALUES(X'af2c42003efc826ab4361f73f9d890942146fe0ebe806786f8e7190800000000',X'5cffe70a5ff8af68da766af8e885a0344286fca4e8424bf3e80a8fc3891d7363','9999-12-31 22:59:59+00:00',NULL,0);
INSERT INTO piece_expirations VALUES(X'af2c42003efc826ab4361f73f9d890942146fe0ebe806786f8e7190800000000',X'95d2fc24afa6c80ffea95ee846a4fbe4705e9f95d03c914ca5e44ee57a157aad','9999-12-31 22:59:59+00:00',NULL,0);
----------cut-------------------- (skip all records with 9999-12-31 timestamps about 20k of them)
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'83e28e948275d44dcd244e405828b412df6ebc082ed275d064d0a22532b595a4','2024-07-06 16:12:35.131048+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'eacbb2c6c516c41e867aa7584b3eb0e646090a03eb898515d6aa9dc8ef1e606e','2024-07-06 16:13:03.296976+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'3f381d23408a5e7f30ae15323642b08c702bd2f7888a8129b0ee1855aff9913d','2024-07-06 16:21:42.895462+00:00',NULL,0);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'a56315fcbaca89e6643dbcb4eecc6019e444f1146ad67476b0f0ddc9bb37770d','2024-07-06 16:22:31.145661+00:00',NULL,0);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'2adce981ff04c24da26a1b4be657a0d24b71a14f103201029a073daa48da296e','2024-07-06 16:22:34.327309+00:00',NULL,0);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'114db2673253d86fee8a16a96258b2c36cbee712659fbc34af22f9202de4f736','2024-07-06 16:22:38.648136+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'4912653437b098af37d2c0b2840d0cc6c4057569bb99c095cb244c49a14a7afc','2024-07-06 16:23:57.52352+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'e2a7159229ccd77f6c4abe84e8346ef52b1be8cb2491624534a03c95121575c1','2024-07-06 16:24:30.421535+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'589923128f48d07bd96490696bf6f167f17bf892415e8618389e3a5b50ffc9a5','2024-07-06 16:25:18.656935+00:00',NULL,1);
---------cut----------------- (few MILLIONS records with TTL timestamps before timestamp of DB dump)
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'cd43e089023a35970680edb6aa5c9737fa4fc242f2597e8ac8ba318407dc7cdb','2024-07-10 23:42:46.360634+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'07fe5ac4aac528e7a746b4bdc7b3219b0342eb2d080468b518e0c8790a2d29fe','2024-07-10 23:42:50.80005+00:00',NULL,0);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'7c47f5a47a711d9c7e884080804b20c98510079eb8c62c1756f861835d863d57','2024-07-10 23:42:57.35328+00:00',NULL,0);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'12a1e0b36f9f4f37e67f8f3e8774e6cb3c864bd84254a9b60a31ba921f1417f0','2024-07-10 23:43:06.684222+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'396467b3fe9472e0c05f411dc7f2ce29f91435b08d60e992e4caa756bbb1116c','2024-07-10 23:43:08.859516+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'ae6954d11b3807ea1061838f397eb8ce75ab8b1328ad649056d78539528f10fa','2024-07-10 23:43:10.61353+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'54664b72169fdaa7b057c4c92b216b3b8c41621a474ffab7b9ca3bae328f46c1','2024-07-10 23:43:19.732135+00:00',NULL,1);
INSERT INTO piece_expirations VALUES(X'a28b4f04e10bae85d67f4c6cb82bf8d4c0f0f47a8ea72627524deb6ec0000000',X'18225b0412709785a5db89edc31a746f57a5615c6c50e0b40831dae581a824b7','2024-07-10 23:43:23.135277+00:00',NULL,1);