Skip to content

Commit 5d9923c

Browse files
authored
fix: Fix counting "lost" bridges. (#869)
* fix: Fix counting "lost" bridges. * test: Add a unit test for "lost bridges".
1 parent 7623960 commit 5d9923c

File tree

4 files changed

+23
-3
lines changed

4 files changed

+23
-3
lines changed

src/main/kotlin/org/jitsi/jicofo/bridge/BridgeSelector.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ class BridgeSelector @JvmOverloads constructor(
7575
* The number of bridges which disconnected without going into graceful shutdown first.
7676
*/
7777
private val lostBridges = AtomicInteger()
78+
fun lostBridges() = lostBridges.get()
7879

7980
/**
8081
* Adds a bridge to this selector, or if a bridge with the given JID
@@ -110,7 +111,7 @@ class BridgeSelector @JvmOverloads constructor(
110111
fun removeJvbAddress(bridgeJid: Jid) {
111112
logger.info("Removing JVB: $bridgeJid")
112113
bridges.remove(bridgeJid)?.let {
113-
if (it.isInGracefulShutdown) {
114+
if (!it.isInGracefulShutdown) {
114115
lostBridges.incrementAndGet()
115116
}
116117
eventEmitter.fireEvent { bridgeRemoved(it) }

src/test/java/mock/util/TestConference.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private void createJvbAndConference(String serverName, EntityBareJid roomName)
7474
mockBridge.start();
7575

7676
Bridge bridge = harness.jicofoServices.getBridgeSelector().addJvbAddress(bridgeJid);
77-
BridgeTestKt.setStats(bridge, 0.0, "region", "version", true /* colibri2 */);
77+
BridgeTestKt.setStats(bridge, 0.0, "region", "version", true /* colibri2 */, false);
7878

7979
createConferenceRoom(roomName);
8080
}

src/test/kotlin/org/jitsi/jicofo/bridge/BridgeSelectorTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,23 @@ class BridgeSelectorTest : ShouldSpec() {
148148
val jvb2 = selector.addJvbAddress(jid2).apply { setStats(stress = 0.9) }
149149
selector.selectBridge() shouldBe jvb2
150150
}
151+
context("Lost bridges stats") {
152+
val selector = BridgeSelector(clock)
153+
selector.lostBridges() shouldBe 0
154+
155+
val jvb1 = selector.addJvbAddress(jid1)
156+
selector.lostBridges() shouldBe 0
157+
158+
should("Increment the lost bridges stat when a bridge goes away") {
159+
selector.removeJvbAddress(jvb1.jid)
160+
selector.lostBridges() shouldBe 1
161+
}
162+
should("Not increment the lost bridges stat when a bridge in graceful-shutdown goes away") {
163+
jvb1.setStats(gracefulShutdown = true)
164+
selector.removeJvbAddress(jvb1.jid)
165+
selector.lostBridges() shouldBe 0
166+
}
167+
}
151168
}
152169
}
153170

src/test/kotlin/org/jitsi/jicofo/bridge/BridgeTest.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,8 @@ fun Bridge.setStats(
126126
stress: Double? = null,
127127
region: String? = null,
128128
version: String? = null,
129-
colibri2: Boolean = true
129+
colibri2: Boolean = true,
130+
gracefulShutdown: Boolean = false
130131
) = setStats(
131132
ColibriStatsExtension().apply {
132133
stress?.let { addStat(ColibriStatsExtension.Stat("stress_level", it)) }
@@ -136,5 +137,6 @@ fun Bridge.setStats(
136137
}
137138
version?.let { addStat(ColibriStatsExtension.Stat("version", version)) }
138139
if (colibri2) addStat("colibri2", "true")
140+
if (gracefulShutdown) addStat(ColibriStatsExtension.SHUTDOWN_IN_PROGRESS, "true")
139141
}
140142
)

0 commit comments

Comments
 (0)