Skip to content

[Bug]: GC and scrub plugin do not cleanup malformed blobs #2598

Description

@shoneefd

zot version

2.0.4

Describe the bug

We have a registry server which has several storage blobs in a malformed state with no live blobs and large files trapped permanently in the .uploads subdirectory. Here is an example of the observed directory structure:

root@registry-na-01:/storage/zot/sce/076d3606-33c3-41ec-95c4-9805c6be1f3c# ls -a1R
.:
.
..
blobs
index.json
oci-layout
.uploads

./blobs:
.
..
sha256

./blobs/sha256:
.
..

./.uploads:
.
..
117ab70a-14cf-408f-9ad0-ca7ab73505b2
dd6167a3-d1f0-4e3c-b0ac-d8605eba5399

In total, eleven blocks of this malformed type are taking up nearly 100 GB of junk space. We have enabled both the GC and the scrub plugin, and neither appears capable of clearing out these blocks. Here are the relevant parts of our config.json:

"distSpecVersion": "1.1.0-dev",
"storage": {
  "rootDirectory": "/storage/zot",
  "dedupe": "true",
  "gc": "true",
  "gcDelay": "1h",
  "gcInterval": "24h"
},
"scrub": {
  "enable": true,
  "interval": "2h"
},

To reproduce

We suspect this issue occurs when a blob upload in-progress is canceled, but have not yet reproduced

Expected behavior

The GC should clean up these blocks.

Screenshots

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingrm-externalRoadmap item submitted by non-maintainers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions