All my nodes have started showing this warn (endless messages) as soon as they were updated to the new version.
All of them have 100% audit score, i’ve never seen this before.
Anyone else have this messages ?
2024-07-03T22:06:27Z WARN collector unable to delete piece {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “Piece ID”: “FFUGWPHFGJKKT56BFEW65U57OTPZOKKF5B47ID4IGROMTFQYRWPQ”, “error”: “pieces error: filestore error: file does not exist”, “errorVerbose”: “pieces error: filestore error: file does not exist\n\tstorj.io/storj/storagenode/blobstore/filestore.(*blobStore).Stat:122\n\tstorj.io/storj/storagenode/pieces.(*BlobsUsageCache).pieceSizes:270\n\tstorj.io/storj/storagenode/pieces.(*BlobsUsageCache).DeleteWithStorageFormat:250\n\tstorj.io/storj/storagenode/pieces.(*Store).DeleteSkipV0:355\n\tstorj.io/storj/storagenode/collector.(*Service).Collect.func1:88\n\tstorj.io/storj/storagenode/storagenodedb.(*pieceExpirationDB).GetExpired:71\n\tstorj.io/storj/storagenode/pieces.(*Store).GetExpired:575\n\tstorj.io/storj/storagenode/collector.(*Service).Collect:87\n\tstorj.io/storj/storagenode/collector.(*Service).Run.func1:65\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/storj/storagenode/collector.(*Service).Run:61\n\tstorj.io/storj/private/lifecycle.(*Group).Run.func2.1:87\n\truntime/pprof.Do:51\n\tstorj.io/storj/private/lifecycle.(*Group).Run.func2:86\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:78”}
2024-07-03T22:06:28Z WARN collector unable to delete piece {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “Piece ID”: “4NZIKENI4SB2WWIKYVHQINKG5SFFX65VTBBOMP5QFZZYEHF7WFFQ”, “error”: “pieces error: filestore error: file does not exist”, “errorVerbose”: “pieces error: filestore error: file does not exist\n\tstorj.io/storj/storagenode/blobstore/filestore.(*blobStore).Stat:122\n\tstorj.io/storj/storagenode/pieces.(*BlobsUsageCache).pieceSizes:270\n\tstorj.io/storj/storagenode/pieces.(*BlobsUsageCache).DeleteWithStorageFormat:250\n\tstorj.io/storj/storagenode/pieces.(*Store).DeleteSkipV0:355\n\tstorj.io/storj/storagenode/collector.(*Service).Collect.func1:88\n\tstorj.io/storj/storagenode/storagenodedb.(*pieceExpirationDB).GetExpired:71\n\tstorj.io/storj/storagenode/pieces.(*Store).GetExpired:575\n\tstorj.io/storj/storagenode/collector.(*Service).Collect:87\n\tstorj.io/storj/storagenode/collector.(*Service).Run.func1:65\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/storj/storagenode/collector.(*Service).Run:61\n\tstorj.io/storj/private/lifecycle.(*Group).Run.func2.1:87\n\truntime/pprof.Do:51\n\tstorj.io/storj/private/lifecycle.(*Group).Run.func2:86\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:78”}
2024-07-03T22:06:28Z WARN collector unable to delete piece {“Process”: “storagenode”, “Satellite ID”: “12EayRS2V1kEsWESU9QMRseFhdxYxKicsiFmxrsLZHeLUtdps3S”, “Piece ID”: “2CG4VQEH6R5QVG3Z5Y6R3NIY2HRWL5RK35QRN426DBCOTXMU5WFA”, “error”: “pieces error: filestore error: file does not exist”, “errorVerbose”: “pieces error: filestore error: file does not exist\n\tstorj.io/storj/storagenode/blobstore/filestore.(*blobStore).Stat:122\n\tstorj.io/storj/storagenode/pieces.(*BlobsUsageCache).pieceSizes:270\n\tstorj.io/storj/storagenode/pieces.(*BlobsUsageCache).DeleteWithStorageFormat:250\n\tstorj.io/storj/storagenode/pieces.(*Store).DeleteSkipV0:355\n\tstorj.io/storj/storagenode/collector.(*Service).Collect.func1:88\n\tstorj.io/storj/storagenode/storagenodedb.(*pieceExpirationDB).GetExpired:71\n\tstorj.io/storj/storagenode/pieces.(*Store).GetExpired:575\n\tstorj.io/storj/storagenode/collector.(*Service).Collect:87\n\tstorj.io/storj/storagenode/collector.(*Service).Run.func1:65\n\tstorj.io/common/sync2.(*Cycle).Run:99\n\tstorj.io/storj/storagenode/collector.(*Service).Run:61\n\tstorj.io/storj/private/lifecycle.(*Group).Run.func2.1:87\n\truntime/pprof.Do:51\n\tstorj.io/storj/private/lifecycle.(*Group).Run.func2:86\n\tgolang.org/x/sync/errgroup.(*Group).Go.func1:78”}
This warning means that the garbage collector removed the data with a TTL before it expired, so now when the TTL collector tries to remove it, it can’t find it.
The customer may delete their data before the expiration, if they wish or if they for example rewrote this data before the expiration.
Thanks, I got the same errors in this version.
Do I understand you correctly that over time it will cleaned up? And thus the WARN is not an issue?
If so, I would think that filling the log files with these not-really-errors would be a bit overkill?
Yes, it should cleanup them and these WARNs are not an issue in this exact case.
The code is universal, so it should print a WARN if the piece is missing, because it’s not expected.
The downside of this is that the log gets flooded with these messages at a rate of thousands per minute, forcing you to set that process to Error, preventing you from seeing the rest of the WARN events and making you resort to grepping through a log of enormous size.
The 107 version gives millions of lines of “WARN … collector…” and there were some “ERROR … collector…” too. Reading about both entries that are not something to care about, I choose FATAL to get rid of them.
Maybe you can use ERROR level, in case something useful comes up. It’s up to you.
Can’t we just change this behaviour, like at deletion with bloom filter also perform a batch delete every N deleted files in the TTL database? Is actually quite annoying, to get flooded with those warnings at every collector run.
Unfortunately not, otherwise you will get a “database is locked”, because there could be a TTL collector running.
I believe It could be possible only for non-lazy filewalker, because there would be a one process, but I’m not sure. We have had “database is locked” issues even when there was no lazy mode at all.
I would start a new thread to get better visibility, or maybe even GitHub issue. Or even a PR — it’s a one line change.
I thought this issue has been already fixed (or maybe fix was suggested, not sure) but this should not be an error, it probably a warning at best, but like Ly just info will suffice. Not having a file that has been previously deleted is pretty normal occurrence.