Repository navigation
Closed
Neopixler/artifactory-user-plugins
#1Description
Plugin Name
artifactCleanup.groovy
Plugin Path?
cleanup/artifactCleanup/artifactCleanup.groovy
IsDeprecated
Yes
config/properties
{"policies":[{"cron":"0 0 6 * * ?","repos":["codesign_largefiles-generic-dev-local"],"timeUnit":"day","timeInterval":1,"dryRun":false,"paceTimeMS":500,"disablePropertiesSupport":true}]}Artifactory Version?
7.98.14
Alternatives Explored
I fixed it locally, here the diff:
diff --git a/artifactCleanup.groovy b/artifactCleanup.groovy
index d91e81b..6dbd352 100644
--- a/artifactCleanup.groovy
+++ b/artifactCleanup.groovy
@@ -276,7 +276,7 @@ private def getSkippedPaths(String[] repos) {
// Simplify list to have only parent paths
def paths = []
for (path in pathsTmp.sort{ it }) {
- if (paths.size == 0 || ! path.startsWith(paths[-1])) {
+ if (paths.size() == 0 || ! path.startsWith(paths[-1])) {
if (log.isTraceEnabled()){
log.trace "skip added for " + repoKey + ":" + path
}
@@ -284,8 +284,8 @@ private def getSkippedPaths(String[] repos) {
}
}
- if (paths.size > 0){
- skip[repoKey] = paths.toArray(new String[paths.size])
+ if (paths.size() > 0){
+ skip[repoKey] = paths.toArray(new String[paths.size()])
}
}
def timeStop = new Date()Issue Summary
See following stack-trace:
2025-03-05T07:46:54.669Z [jfrt ] [INFO ] [4c75eb8c005255f3] [artifactCleanup:-2 ] [http-nio-8081-exec-5] - Removing all artifacts not downloaded since 2025/02/05 07:46
2025-03-05T07:46:54.685Z [jfrt ] [ERROR] [4c75eb8c005255f3] [c.e.m.GlobalExceptionMapper:51] [http-nio-8081-exec-5] - Exception evaluating property 'size' for java.util.ImmutableCollections$ListN, Reason: groovy.lang.MissingPropertyException: No such property: size for class: org.artifactory.model.common.RepoPathImpl
Possible solutions: file, id, name groovy.lang.MissingPropertyException: Exception evaluating property 'size' for java.util.ImmutableCollections$ListN, Reason: groovy.lang.MissingPropertyException: No such property: size for class: org.artifactory.model.common.RepoPathImpl Possible solutions: file, id, name at org.codehaus.groovy.runtime.DefaultGroovyMethods.getAtIterable(DefaultGroovyMethods.java:8785) at org.codehaus.groovy.runtime.DefaultGroovyMethods.getAt(DefaultGroovyMethods.java:8773) at groovy.lang.MetaClassImpl$6.getProperty(MetaClassImpl.java:2051) at org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:63)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:329)
at artifactCleanup$_artifactCleanup_closure4.doCall(artifactCleanup.groovy:207)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107)
at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:38)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
at org.codehaus.groovy.runtime.callsite.BooleanReturningMethodInvoker.invoke(BooleanReturningMethodInvoker.java:49)
at org.codehaus.groovy.runtime.callsite.BooleanClosureWrapper.call(BooleanClosureWrapper.java:52)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.find(DefaultGroovyMethods.java:4453)
at org.codehaus.groovy.runtime.dgm$237.invoke(Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:242)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:51) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:139)
at artifactCleanup.artifactCleanup(artifactCleanup.groovy:181) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:362)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:814)
at groovy.lang.GroovyObject.invokeMethod(GroovyObject.java:39)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:424)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:350)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:61)
at artifactCleanup$_run_closure1$_closure7.doCall(artifactCleanup.groovy:68)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:569)
at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:107) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:323) at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:274)
at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1030) at groovy.lang.Closure.call(Closure.java:427)
at groovy.lang.Closure.call(Closure.java:416)Can you fix it?
Yes
Expected Solution
No exceptions and proper cleanup with modern Java versionsMetadata
Metadata
Assignees
Labels
No labels
Activity
Convert size property access to method call for compatibility with mo…
nehamjfrog commentedon Mar 27, 2025
I have updated the suggested changes as part of the PR
Thank you, for reporting the issue - we welcome the feedback and contributions to this repository.
Neopixler commentedon Mar 27, 2025
Thank you!