From fb0a2f4c08408f1adc1829993c6564d228e05892 Mon Sep 17 00:00:00 2001
From: Andree Klattenhoff <andree.klattenhoff@open-xchange.com>
Date: Wed, 22 May 2024 20:59:10 +0200
Subject: [PATCH] Improve logging if fetch for manifest.json/meta.json failed

---
 src/version.js | 25 ++++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/src/version.js b/src/version.js
index 304aef7..29cb2fc 100644
--- a/src/version.js
+++ b/src/version.js
@@ -45,8 +45,15 @@ export const versionUpdateGauge = new Gauge({
 export async function fetchVersionInfo () {
   const versions = await Promise.all(configMap.urls.map(async baseUrl => {
     try {
-      const response = await fetch(new URL('meta.json', baseUrl), { cache: 'no-store' })
-      if (!response.ok) throw new Error()
+      const response = await fetch(new URL('meta.json', baseUrl), { cache: 'no-store' }).catch((err) => {
+        logger.error(err)
+        logger.warn(`[Version] Failed to load meta.json from UI container at ${baseUrl}.`)
+        throw new Error()
+      })
+      if (!response.ok) {
+        logger.warn(`[Version] Failed to load meta.json from ${response.url} (Status: ${response.status}: ${response.statusText})`)
+        throw new Error()
+      }
 
       if (response.headers.get('version')) return response.headers.get('version')
 
@@ -55,10 +62,18 @@ export async function fetchVersionInfo () {
       if (!version) throw new Error()
       return version
     } catch (err) {
-      logger.warn(`[Version] UI container at ${baseUrl} does not have meta.json. Fall back to version hash based on manifest.`)
+      logger.warn('[Version] Fall back to version hash based on manifest.')
+    }
+
+    const response = await fetch(new URL('manifest.json', baseUrl), { cache: 'no-store' }).catch((err) => {
+      logger.error(err)
+      logger.warn(`[Version] Failed to load manifest.json from UI container at ${baseUrl}.`)
+      throw new Error(`Cannot fetch manifest.json from ${baseUrl}`)
+    })
+    if (!response.ok) {
+      logger.warn(`[Version] Failed to load manifest.json from ${response.url} (Status: ${response.status}: ${response.statusText})`)
+      throw new Error(`Cannot fetch manifest.json from ${baseUrl}`)
     }
-    const response = await fetch(new URL('manifest.json', baseUrl), { cache: 'no-store' })
-    if (!response.ok) throw new Error(`Cannot fetch manifest.json from ${baseUrl}`)
     const manifest = await response.json()
     return hash(manifest)
   }))
-- 
GitLab