@atripp Ah so maybe we are encountering a new bug.
I removed and re-added the rule but it didn't change anything. I'll look into tagging them and deleting through the API.
@atripp Ah so maybe we are encountering a new bug.
I removed and re-added the rule but it didn't change anything. I'll look into tagging them and deleting through the API.
Thanks @atripp
I'm not sure it could be reproduced in the current release now that the bug that caused them to accumulate is fixed. But is there a way I could tell proget to delete them? I'd like to avoid needing to delete both the physical files and DB entries and risk breaking something
@atripp the other tabs are set to the most permissive settings.
I see packages being deleted in the logs and verified that they are no longer available by UUID, I assume that's due to the bugfix I mentioned earlier. But there's still lots of old images being retained.
In the database I see they exist in the Docker image and blob tables but don't have any identifying info in the tags table so I'm not sure how to tell where they came from or how to get them
We have a feed with about 100 GB of docker images. New versions of the images are pushed up weekly with the same tag and it seems like the old images are not being deleted. Pulling by tag gets the latest image but pulling by UUID allows us to get an image that should have been removed by the retention rules.
The retention rules keep images that are tagged or that that have been downloaded in the last 14 days. We've tried reducing that down to 5 days and dry-running, but it did not remove a significant number of images.
We just upgraded to the latest version which has the PG-2477 fix but the issue still exists.
Are there any ways to get it to delete these old docker images?
Retention rules for reference
@atripp alright, Thank you!
@atripp Do you have any advice on how to continue from here?
Just tested this:
So if I remove the SNAPSHOT tag from the poms that I upload, then the server would be able to supply them when a request for the SNAPSHOT version comes in?
Since dependencies still refer to this as a snapshot version the request looks like this
https://<my-feed>/com/test/Toolkit/2.2.0-SNAPSHOT/Toolkit-2.2.0-SNAPSHOT.pom
and it fails to find the file.
you're not supposed to create an artifact with a version that has -SNAPSHOT in it. Instead, the -SNAPSHOT seems to be intended for use inside of a <dependency> only
I think if you specify a dependency on a snapshot you would have to have a corresponding artifact that declares its own version as snapshot. For example, if I had in my local repo a 1.8 release version and a 1.8 snapshot I would need some sort of identifier in the snapshot artifact to indicate that it is a snapshot so that when maven looks to resolve a 1.8-SNAPSHOT dependency it knows which of those two is the latest.
That's how it is done here with the data-service pom.
My understanding of how the server logic works, if you request a version with -SNAPSHOT in it, then the latest version is returned. In other words, -SNAPSHOT is not a real version, it's just something the server uses t send back the latest version. And since there is no latest version, you get an error.
It seems to be a problem to allow a version called -SNAPSHOT to be uploaded, because then it's ambiguous. When you ask for -SNAPSHOT do you want the version named that, or the latest version, etc.
So if I remove the SNAPSHOT tag from the poms that I upload, then the server would be able to supply them when a request for the SNAPSHOT version comes in?
As to why the snapshots exist, this is an inherited code base and the previous maintainers left it in that state.
@atripp Alright, Thank you!
I can recreate the error with a .pom like below. This appears to follow the naming conventions.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.test</groupId>
<artifactId>test-parent</artifactId>
<version>2.2.0-SNAPSHOT</version>
</parent>
<name>libToolkit</name>
<artifactId>Toolkit</artifactId>
<packaging>jar</packaging>
</project>
The file is named Toolkit-2.2.0-SNAPSHOT.pom. Does it matter that 'SNAPSHOT' is in the file name?
If not, what repository settings might be causing this?
Thanks,
Nick