Fix restart without system Java via Sonic stop/startcontainer.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-07-24 09:16:11 +02:00
co-authored by Cursor
parent d1ef63f3f7
commit fe61bd087a
6 changed files with 289 additions and 52 deletions
@@ -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