Adobe-Consulting-Services / acs-aem-commons

http://adobe-consulting-services.github.io/acs-aem-commons/
Apache License 2.0
453 stars 597 forks source link

ResultSet referenced from a method is not visible from class loader #3321

Open krystian-panek-wttech opened 4 months ago

krystian-panek-wttech commented 4 months ago

Required Information

Expected Behavior

No issues

Actual Behavior

Trying to run DAM Update Workflow (transient) on some assets using Synthetic Single Threaded runner but all workflows are marked as failed most probably because of the following error:

15.04.2024 09:07:41.383 *WARN* [sling-default-4-acs-commons@bulk-workflow-execution://etc/acs-commons/bulk-workflow-manager/webp-full-dam/jcr:content/workspace] com.adobe.acs.commons.workflow.bulk.execution.impl.runners.SyntheticWorkflowRunnerImpl Complete call on [ /etc/acs-commons/bulk-workflow-manager/webp-full-dam/jcr:content/workspace/payloads2/payload32 ] failed
java.lang.IllegalArgumentException: com.adobe.granite.workflow.collection.util.ResultSet referenced from a method is not visible from class loader
        at java.base/java.lang.reflect.Proxy$ProxyBuilder.ensureVisible(Proxy.java:858)
        at java.base/java.lang.reflect.Proxy$ProxyBuilder.validateProxyInterfaces(Proxy.java:700)
        at java.base/java.lang.reflect.Proxy$ProxyBuilder.<init>(Proxy.java:627)
        at java.base/java.lang.reflect.Proxy.lambda$getProxyConstructor$1(Proxy.java:426)
        at java.base/jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(AbstractClassLoaderValue.java:329)
        at java.base/jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(AbstractClassLoaderValue.java:205)
        at java.base/java.lang.reflect.Proxy.getProxyConstructor(Proxy.java:424)
        at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1006)
        at com.adobe.acs.commons.workflow.synthetic.impl.SyntheticWorkflowRunnerImpl.runGraniteWorkflowProcess(SyntheticWorkflowRunnerImpl.java:351) [com.adobe.acs.acs-aem-commons-bundle:6.5.0]
        at com.adobe.acs.commons.workflow.synthetic.impl.SyntheticWorkflowRunnerImpl.run(SyntheticWorkflowRunnerImpl.java:245) [com.adobe.acs.acs-aem-commons-bundle:6.5.0]
        at com.adobe.acs.commons.workflow.synthetic.impl.SyntheticWorkflowRunnerImpl.execute(SyntheticWorkflowRunnerImpl.java:147) [com.adobe.acs.acs-aem-commons-bundle:6.5.0]
        at com.adobe.acs.commons.workflow.synthetic.impl.SyntheticWorkflowRunnerImpl.execute(SyntheticWorkflowRunnerImpl.java:185) [com.adobe.acs.acs-aem-commons-bundle:6.5.0]
        at com.adobe.acs.commons.workflow.synthetic.impl.SyntheticWorkflowRunnerImpl.execute(SyntheticWorkflowRunnerImpl.java:198) [com.adobe.acs.acs-aem-commons-bundle:6.5.0]
        at com.adobe.acs.commons.workflow.bulk.execution.impl.runners.SyntheticWorkflowRunnerImpl$SyntheticWorkflowRunnable.run(SyntheticWorkflowRunnerImpl.java:180) [com.adobe.acs.acs-aem-commons-bundle:6.5.0]
        at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(QuartzJobExecutor.java:349) [org.apache.sling.commons.scheduler:2.7.12]
        at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [org.apache.sling.commons.scheduler:2.7.12]
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)

Note that before upgrading to SP20 from SP6 and ACS Commons to 6.5.0 from 4.8.6 everything worked without any code changes as expected.

I already have done instance restart after installing AEM SP /ACS Commons package upgrades.

Any tips?

krystian-panek-wttech commented 4 months ago

I just found that in the meantime that proxy was added and this is the most probably a root cause of my problem:

https://github.com/Adobe-Consulting-Services/acs-aem-commons/blob/master/bundle/src/main/java/com/adobe/acs/commons/workflow/synthetic/impl/SyntheticWorkflowRunnerImpl.java#L321

https://github.com/Adobe-Consulting-Services/acs-aem-commons/compare/acs-aem-commons-4.5.2...acs-aem-commons-6.5.0#diff-46718450574c33fe39f448da9089a59110891ac7e2fcef2947a459e81e28bd93R321-R323

in PR/change https://github.com/Adobe-Consulting-Services/acs-aem-commons/pull/2734/files done by @froggin, @kwin / @davidjgonzalez do you think that maybe some fix/improvement needs to be done here? BTW why that proxy has been added? Based on my understanding it looks like quite such heavy stuff has been added here to just to make the CM build/code quality check passing.

If fixing this requires too much effort / will not be done by anyone as this impacts on-prem and there is no interest, just tell me. I will look for a different approach to do my job but... I always liked to use BWM :)

It would be nice to have this fixed since on the tool page https://adobe-consulting-services.github.io/acs-aem-commons/features/bulk-workflow-manager/index.html there is no info that it is deprecated/no-longer supported on on-prem 6.5.x so I am a bit surprised here.

BTW this class "com.adobe.granite.workflow.collection.util.ResultSet" is still loadable from e.g Groovy Console (which has Dynamic-Import-Package: *)

davidjgonzalez commented 4 months ago

@krystian-panek-wttech if i recall this was due to a rule change that no longer allowed us to implement certain Java interfaces.

Will need to look more closely at this.

krystian-panek-wttech commented 4 months ago

a rule change that no longer allowed us to implement certain Java interfaces.

this makes sense on CM but not on-prem. I fell like the way how the problem was solved is too cumbersome.

krystian-panek-wttech commented 4 months ago

for whoever also struggling with this I created a patch for recovering working synthetic runner on AEM On-Prem.

synthetic-workflows-on-prem.patch

just clone repo at tag 6.5.0 version/tag and apply the patch then build with command cd bundle && mvn clean package -Dmaven.test.skip=true and install patched jar (target/*-6.5.1-SNAPSHOT.jar) onto your AEM instance

krystian-panek-wttech commented 4 months ago

BTW some CSS on the BWM page seems to no longer work, just see this screenshot captured from pure AEM 6.5.19 + ACS Commons 6.5.0

image

I have a feeling that this tool is abandoned... Even when using multithreaded runner yesterday after a few hours of processing, the "completed" number changed to "0" for some unknown reason... so many bugs seem to be here now. If the tool is really abandoned maybe please state it explicitly.