codbex / codbex-kronos

SAP HANA XS Classic and ABAP Compatibility Platform
https://codbex.com
Eclipse Public License 2.0
5 stars 3 forks source link

[Core] Wiki Synchronizer Ignore Paths #25

Open Fluctuationqt opened 2 years ago

Fluctuationqt commented 2 years ago

From xsk created by ThuF: SAP/xsk#1702

Issue

It seems that with the Wiki Synchronizer a blocker was introduced for upgrading the Eclipse Dirigible versions in project XSK (e.g. to version 6.3.0 and later).

The issue is due to the following exception:

org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.eclipse.dirigible.runtime.core.listener.DirigibleServletContextListener]
    java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
        at java.base/sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:316)
        at java.base/sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:258)
        at java.base/java.util.jar.JarVerifier.processEntry(JarVerifier.java:277)
        at java.base/java.util.jar.JarVerifier.update(JarVerifier.java:234)
        at java.base/java.util.jar.JarFile.initializeVerifier(JarFile.java:767)
        at java.base/java.util.jar.JarFile.getInputStream(JarFile.java:852)
        at org.apache.catalina.webresources.AbstractSingleArchiveResource.getJarInputStreamWrapper(AbstractSingleArchiveResource.java:39)
        at org.apache.catalina.webresources.AbstractArchiveResource.getContent(AbstractArchiveResource.java:183)
        at org.apache.catalina.webresources.CachedResource.getContent(CachedResource.java:322)
        at org.apache.catalina.webresources.CachedResource.getInputStream(CachedResource.java:307)
        at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1175)
        at java.base/java.lang.Class.getResourceAsStream(Class.java:2650)
        at org.eclipse.dirigible.engine.wiki.synchronizer.WikiSynchronizer.registerPredeliveredWiki(WikiSynchronizer.java:130)
        at org.eclipse.dirigible.engine.wiki.synchronizer.WikiClasspathContentHandler.isValid(WikiClasspathContentHandler.java:43)
        at org.eclipse.dirigible.commons.api.content.AbstractClasspathContentHandler.accept(AbstractClasspathContentHandler.java:35)
        at org.eclipse.dirigible.commons.api.content.ClasspathContentLoader.load(ClasspathContentLoader.java:63)
        at org.eclipse.dirigible.runtime.core.initializer.DirigibleInitializer.loadPredeliveredContent(DirigibleInitializer.java:122)
        at org.eclipse.dirigible.runtime.core.initializer.DirigibleInitializer.initialize(DirigibleInitializer.java:62)
        at org.eclipse.dirigible.runtime.core.listener.DirigibleServletContextListener.contextInitialized(DirigibleServletContextListener.java:39)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4763)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5232)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1016)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1903)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        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)

The reason behind it is that JAR files located at META-INF/dirigible/resources-neo-sdk/sdk/* (Neo SDK files) doesn't have have valid signature. At the same time the Wiki Synchronizer is trying to iterate over these JAR files and find a *.md files to be synchronized such as:

This leads to the above exception and the inability to run project XSK with the latest Eclipse Dirigible version.

Proposal

Introduce new environment variable _(e.g. DIRIGIBLE_SYNCHRONIZER_IGNORE_PATHS expecting comma separated values) that should be respected by all synchronizers (Wiki, BPM, Job, etc.). Ultimately it should be possible to specify both Registry and ClassPath (e.g. starting with META-INF/dirigible)_ paths that should be ignored.

DIRIGIBLE_SYNCHRONIZER_IGNORE_PATHS=META-INF/dirigible/resources-neo-sdk,META-INF/dirigible/something-else,project/path
Fluctuationqt commented 2 years ago

Issue cloned to https://github.com/eclipse/dirigible/issues/1833