Quellcode durchsuchen

fix: try-catch for unknow reason to inhibit api crash

JimMoen vor 2 Jahren
Ursprung
Commit
812e8ef314
1 geänderte Dateien mit 27 neuen und 9 gelöschten Zeilen
  1. 27 9
      apps/emqx_prometheus/src/emqx_prometheus.erl

+ 27 - 9
apps/emqx_prometheus/src/emqx_prometheus.erl

@@ -883,15 +883,33 @@ gen_point(Type, Name, Path) ->
 %% TODO: cert manager for more generic utils functions
 %% TODO: cert manager for more generic utils functions
 cert_expiry_at_from_path(Path0) ->
 cert_expiry_at_from_path(Path0) ->
     Path = emqx_schema:naive_env_interpolation(Path0),
     Path = emqx_schema:naive_env_interpolation(Path0),
-    case file:read_file(Path) of
-        {ok, PemBin} ->
-            [CertEntry | _] = public_key:pem_decode(PemBin),
-            Cert = public_key:pem_entry_decode(CertEntry),
-            %% TODO: Not fully tested for all certs type
-            {'utcTime', NotAfterUtc} =
-                Cert#'Certificate'.'tbsCertificate'#'TBSCertificate'.validity#'Validity'.'notAfter',
-            utc_time_to_epoch(NotAfterUtc);
-        {error, _} ->
+    try
+        case file:read_file(Path) of
+            {ok, PemBin} ->
+                [CertEntry | _] = public_key:pem_decode(PemBin),
+                Cert = public_key:pem_entry_decode(CertEntry),
+                %% TODO: Not fully tested for all certs type
+                {'utcTime', NotAfterUtc} =
+                    Cert#'Certificate'.'tbsCertificate'#'TBSCertificate'.validity#'Validity'.'notAfter',
+                utc_time_to_epoch(NotAfterUtc);
+            {error, Reason} ->
+                ?SLOG(error, #{
+                    msg => "read_cert_file_failed",
+                    path => Path0,
+                    resolved_path => Path,
+                    reason => Reason
+                }),
+                0
+        end
+    catch
+        E:R ->
+            ?SLOG(error, #{
+                msg => "obtain_cert_expiry_time_failed",
+                error => E,
+                reason => R,
+                path => Path0,
+                resolved_path => Path
+            }),
             0
             0
     end.
     end.