From 60b30e182d4818cf9d1f06a6eeb201cd62bb8889 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Thu, 12 Mar 2020 07:41:49 +0100
Subject: [PATCH] fix: fetch problematic manager deps in series

---
 .../process/__snapshots__/fetch.spec.ts.snap   | 15 +++++++++++++++
 lib/workers/repository/process/fetch.spec.ts   |  7 +++++++
 lib/workers/repository/process/fetch.ts        | 18 +++++++++++++-----
 3 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/lib/workers/repository/process/__snapshots__/fetch.spec.ts.snap b/lib/workers/repository/process/__snapshots__/fetch.spec.ts.snap
index 7b8d17a9e5..cda4633d9e 100644
--- a/lib/workers/repository/process/__snapshots__/fetch.spec.ts.snap
+++ b/lib/workers/repository/process/__snapshots__/fetch.spec.ts.snap
@@ -2,6 +2,21 @@
 
 exports[`workers/repository/process/fetch fetchUpdates() fetches updates 1`] = `
 Object {
+  "maven": Array [
+    Object {
+      "deps": Array [
+        Object {
+          "datasource": "maven",
+          "depName": "bbb",
+          "updates": Array [
+            "a",
+            "b",
+          ],
+        },
+      ],
+      "packageFile": "pom.xml",
+    },
+  ],
   "npm": Array [
     Object {
       "deps": Array [
diff --git a/lib/workers/repository/process/fetch.spec.ts b/lib/workers/repository/process/fetch.spec.ts
index 04b7b70d81..ed2911d9e1 100644
--- a/lib/workers/repository/process/fetch.spec.ts
+++ b/lib/workers/repository/process/fetch.spec.ts
@@ -4,6 +4,7 @@ import * as lookup from './lookup';
 import { getConfig, mocked, RenovateConfig } from '../../../../test/util';
 import { ManagerApi } from '../../../manager/common';
 import * as datasourceNpm from '../../../datasource/npm';
+import * as datasourceMaven from '../../../datasource/maven';
 
 const npm: ManagerApi = _npm;
 const lookupUpdates = mocked(lookup).lookupUpdates;
@@ -60,6 +61,12 @@ describe('workers/repository/process/fetch', () => {
     it('fetches updates', async () => {
       config.rangeStrategy = 'auto';
       const packageFiles: any = {
+        maven: [
+          {
+            packageFile: 'pom.xml',
+            deps: [{ datasource: datasourceMaven.id, depName: 'bbb' }],
+          },
+        ],
         npm: [
           {
             packageFile: 'package.json',
diff --git a/lib/workers/repository/process/fetch.ts b/lib/workers/repository/process/fetch.ts
index 6812d8540e..9cd79d2c86 100644
--- a/lib/workers/repository/process/fetch.ts
+++ b/lib/workers/repository/process/fetch.ts
@@ -87,14 +87,22 @@ async function fetchManagerPackagerFileUpdates(
 ): Promise<void> {
   const { packageFile } = pFile;
   const packageFileConfig = mergeChildConfig(managerConfig, pFile);
-  const queue = pFile.deps.map(dep => (): Promise<void> =>
-    fetchDepUpdates(packageFileConfig, dep)
-  );
+  const { manager } = packageFileConfig;
   logger.debug(
-    { packageFile, queueLength: queue.length },
+    { manager, packageFile, queueLength: pFile.deps.length },
     'fetchManagerPackagerFileUpdates starting'
   );
-  await pAll(queue, { concurrency: 5 });
+  const problematicManagers = ['pip_requirements', 'maven'];
+  if (problematicManagers.includes(manager)) {
+    for (const dep of pFile.deps) {
+      await fetchDepUpdates(packageFileConfig, dep);
+    }
+  } else {
+    const queue = pFile.deps.map(dep => (): Promise<void> =>
+      fetchDepUpdates(packageFileConfig, dep)
+    );
+    await pAll(queue, { concurrency: 5 });
+  }
   logger.debug({ packageFile }, 'fetchManagerPackagerFileUpdates finished');
 }
 
-- 
GitLab