Fix restart without system Java via Sonic stop/startcontainer.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -35,34 +35,47 @@ public sealed class SonicContainerDiscovery
|
||||
using SonicManagementClient client = new(connection);
|
||||
|
||||
(bool reachable, string? pingError, string? resolvedPath) = await client.CheckConnectionAsync(cancellationToken);
|
||||
if (!reachable)
|
||||
{
|
||||
return SonicDiscoveryResult.Failed(connectionName,
|
||||
$"Management-Konsole nicht erreichbar: {pingError}");
|
||||
}
|
||||
|
||||
(bool listOk, IReadOnlyList<string> remoteNames, string? listError) =
|
||||
await client.GetContainersAsync(cancellationToken);
|
||||
|
||||
List<string> diagnostics = [];
|
||||
List<string> remoteContainers = [];
|
||||
bool listOk = false;
|
||||
string? listError = null;
|
||||
|
||||
foreach (string line in remoteNames)
|
||||
if (!reachable)
|
||||
{
|
||||
if (line.StartsWith("WARN:", StringComparison.OrdinalIgnoreCase)
|
||||
|| line.StartsWith("INFO:", StringComparison.OrdinalIgnoreCase))
|
||||
// Trotzdem KnownContainers nutzen – Neustart kann über SonicBin (stop/startcontainer) gehen.
|
||||
diagnostics.Add($"Management-Ping: {pingError}");
|
||||
if (connection.KnownContainers.Count == 0
|
||||
&& !knownTargets.Any(t =>
|
||||
string.Equals(t.SonicConnectionName, connection.Name, StringComparison.OrdinalIgnoreCase)
|
||||
&& !string.IsNullOrWhiteSpace(t.ContainerName)))
|
||||
{
|
||||
diagnostics.Add(line);
|
||||
continue;
|
||||
return SonicDiscoveryResult.Failed(connectionName,
|
||||
$"Management-Konsole nicht erreichbar: {pingError}");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
(listOk, IReadOnlyList<string> remoteNames, listError) =
|
||||
await client.GetContainersAsync(cancellationToken);
|
||||
|
||||
foreach (string line in remoteNames)
|
||||
{
|
||||
if (line.StartsWith("WARN:", StringComparison.OrdinalIgnoreCase)
|
||||
|| line.StartsWith("INFO:", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
diagnostics.Add(line);
|
||||
continue;
|
||||
}
|
||||
|
||||
remoteContainers.Add(line);
|
||||
}
|
||||
|
||||
remoteContainers.Add(line);
|
||||
}
|
||||
|
||||
if (!listOk)
|
||||
{
|
||||
diagnostics.Add($"Listen-Fehler: {listError}");
|
||||
remoteContainers = [];
|
||||
if (!listOk)
|
||||
{
|
||||
diagnostics.Add($"Listen-Fehler: {listError}");
|
||||
remoteContainers = [];
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback: explizit in appsettings hinterlegte Container
|
||||
|
||||
Reference in New Issue
Block a user