mirror of
https://github.com/scm-manager/scm-manager.git
synced 2026-03-06 12:20:56 +01:00
Fix plugin bundles being executed multiple times because of transient dependencies (#1980)
If a queued module is only removed from the queue upon successfully resolving all its dependencies, it could fail multiple times, causing multiple entries to appear in the queue. This in turn causes the module to get executed multiple times. The solution is to immediately remove the module when it is dequeued. If it fails again, it is then re-added to the queue.
This commit is contained in:
committed by
GitHub
parent
4bba593714
commit
f7718b80e8
2
gradle/changelog/duplicate_module_execution.yaml
Normal file
2
gradle/changelog/duplicate_module_execution.yaml
Normal file
@@ -0,0 +1,2 @@
|
||||
- type: fixed
|
||||
description: Some plugin bundles are executed multiple times ([#1980](https://github.com/scm-manager/scm-manager/pull/1980))
|
||||
@@ -59,12 +59,11 @@ const resolveModule = (name: string) => {
|
||||
const defineModule = (name: string, module: Module) => {
|
||||
Promise.all(module.dependencies.map(resolveModule))
|
||||
.then(resolvedDependencies => {
|
||||
delete queue[name];
|
||||
|
||||
modules["@scm-manager/" + name] = module.fn(...resolvedDependencies);
|
||||
|
||||
Object.keys(queue).forEach(queuedModuleName => {
|
||||
const queueModule = queue[queuedModuleName];
|
||||
delete queue[queuedModuleName];
|
||||
defineModule(queuedModuleName, queueModule);
|
||||
});
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user