awslabs/soci-snapshotter

[FEATURE] Fallback to `containerd` if we cannot lazy load image

turan18 opened this issue · 0 comments

Description

If we are unable to lazy load a single layer in an image we fallback to our internal unpacker that fetches and unpacks the layer to disk. Our local unpacker only operates on the current layer, unlike in containerd where all neighboring layers are fetched concurrently. This is mostly fine, since we wouldn't want to accidentally pre-fetch neighboring layers that should be lazy loaded. However, if we know that we cannot lazy load any layers in an image, we could in theory concurrently pull all layers.

Describe the solution you'd like

If we cannot fetch SOCI artifacts for an image, we should throw some sort of error that indicates that the image (in it's entirety) cannot be lazy loaded. We can check for that error in Prepare and if it is present we can fallback to containerd instead of attempting to locally unpack each layer.

Describe any alternative solutions/features you've considered

Have our local/internal unpacker support concurrent fetches. With this approach, we would need to maintain some state per image, that indicates whether or not an image can be lazy loaded.

Any additional context or information about the feature request

Related to: #988

No response

Tasks

No tasks being tracked yet.