Skip to content

Commit

Permalink
fix: Do not stop health checks after an error response. (#1207)
Browse files Browse the repository at this point in the history
* fix: Do not stop health checks after an error response.
  • Loading branch information
bgrozev authored Jan 27, 2025
1 parent 091a12d commit 25ef40f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,13 @@ synchronized public void shutdown()
}

@Override
public void bridgeRemoved(Bridge bridge)
public void bridgeFailedHealthCheck(@NotNull Bridge bridge)
{
// JvbDoctor is the source of these events, no need for additional handling.
}

@Override
public void bridgeRemoved(@NotNull Bridge bridge)
{
PeriodicHealthCheckTask healthTask = tasks.remove(bridge);
if (healthTask == null)
Expand All @@ -108,7 +114,7 @@ public void bridgeRemoved(Bridge bridge)
}

@Override
public void bridgeAdded(Bridge bridge)
public void bridgeAdded(@NotNull Bridge bridge)
{
if (tasks.containsKey(bridge))
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ class BridgeSelector @JvmOverloads constructor(
// When a bridge returns a non-healthy status, we mark it as non-operational AND we move all conferences
// away from it.
it.isOperational = false
eventEmitter.fireEvent { bridgeRemoved(it) }
eventEmitter.fireEvent { bridgeFailedHealthCheck(it) }
} ?: Unit

override fun healthCheckTimedOut(bridgeJid: Jid) = bridges[bridgeJid]?.let {
Expand Down Expand Up @@ -276,6 +276,7 @@ class BridgeSelector @JvmOverloads constructor(
interface EventHandler {
fun bridgeRemoved(bridge: Bridge)
fun bridgeAdded(bridge: Bridge)
fun bridgeFailedHealthCheck(bridge: Bridge)
fun bridgeIsShuttingDown(bridge: Bridge) {}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2324,24 +2324,36 @@ public void bridgeIsShuttingDown(@NotNull Bridge bridge)
}
}

@Override
public void bridgeFailedHealthCheck(@NotNull Bridge bridge)
{
removeBridge(bridge, "failed health check");
}

@Override
public void bridgeRemoved(@NotNull Bridge bridge)
{
removeBridge(bridge, "was removed");
}

@Override
public void bridgeAdded(Bridge bridge)
{
onBridgeUp(bridge.getJid());
}

private void removeBridge(@NotNull Bridge bridge, @NotNull String reason)
{
List<String> participantIdsToReinvite
= colibriSessionManager != null
? colibriSessionManager.removeBridge(bridge) : Collections.emptyList();
? colibriSessionManager.removeBridge(bridge) : Collections.emptyList();
if (!participantIdsToReinvite.isEmpty())
{
logger.info("Removed " + bridge.getJid() + ", re-inviting " + participantIdsToReinvite);
logger.info("Re-inviting " + participantIdsToReinvite + " because " + bridge.getJid() + " " + reason);
reInviteParticipantsById(participantIdsToReinvite);
}
}

@Override
public void bridgeAdded(Bridge bridge)
{
onBridgeUp(bridge.getJid());
}
}

/**
Expand Down

0 comments on commit 25ef40f

Please sign in to comment.