-
Bug
-
Resolution: Done
-
Major
-
None
Our team upgraded our application (>205 modules) from WFLY 8.2.1 to WFLY 17.0.1 we experienced a noticeable slowdown during the deployment process (3min vs. 6min)
A colleague found out that the following classes seem to cause the lag during dependency resolution since dependencies are processed multiple times:
- weld/subsystem/src/main/java/org/jboss/as/weld/deployment/BeanDeploymentArchiveImpl.java
- weld/subsystem/src/main/java/org/jboss/as/weld/deployment/processors/ExternalBeanArchiveProcessor.java
and came up with the following workarounds that should fix the issues
diff --git a/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/BeanDeploymentArchiveImpl.java b/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/BeanDeploymentArchiveImpl.java
index 521f47cc7d..1b4d7e8b4c 100644
--- a/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/BeanDeploymentArchiveImpl.java
+++ b/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/BeanDeploymentArchiveImpl.java
@@ -246,7 +246,12 @@ public class BeanDeploymentArchiveImpl implements WildFlyBeanDeploymentArchive {
if (moduleDependency.getIdentifier().equals(that.getModule().getIdentifier())) {
return true;
}
+ }
+ }
+ for (DependencySpec dependency : module.getDependencies()) {
+ if (dependency instanceof ModuleDependencySpec) {
+ ModuleDependencySpec moduleDependency = (ModuleDependencySpec) dependency;
// moduleDependency might be an alias - try to load it to get lined module
Module module = loadModule(moduleDependency);
if (module != null && module.getIdentifier().equals(that.getModule().getIdentifier())) {
as well as
diff --git a/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/processors/ExternalBeanArchiveProcessor.java b/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/processors/ExternalBeanArchiveProcessor.java
index da6e0bfcaf..1b539bba4e 100644
--- a/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/processors/ExternalBeanArchiveProcessor.java
+++ b/weld/subsystem/src/main/java/org/jboss/as/weld/deployment/processors/ExternalBeanArchiveProcessor.java
@@ -162,6 +162,12 @@ public class ExternalBeanArchiveProcessor implements DeploymentUnitProcessor {
return;
}
for (DependencySpec dep : module.getDependencies()) {
+ if (!(dep instanceof ModuleDependencySpec)) {
+ continue;
+ }
+ if (deploymentUnits.stream().anyMatch(d -> (((ModuleDependencySpec)dep).getName()).endsWith(d.getName()))) {
+ continue;
+ }
final Module dependency = loadModuleDependency(dep);
if (dependency == null) {
continue;
The fixes should prevent dependencies from being processed multiple times, however, the latter should be improved.
- clones
-
WFLY-13147 Deployment slowdown after WFLY upgrade (DeploymentArchive handling)
-
- Closed
-
- is related to
-
JBEAP-20507 [GSS](7.3.z) WFLY-14055 - Performance degradation for massive deployments in Weld subsystem
-
- Closed
-