Skip to content

Commit 0707e57

Browse files
committed
Patch to don't block call actor on Stopping state waiting for MmsCallController response
This close #2261
1 parent a4cb589 commit 0707e57

3 files changed

Lines changed: 18 additions & 8 deletions

File tree

restcomm/restcomm.commons/src/main/java/org/restcomm/connect/commons/faulttolerance/RestcommSupervisorStrategy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public class RestcommSupervisorStrategy implements SupervisorStrategyConfigurato
2222

2323
final SupervisorStrategy.Directive strategy = resume();
2424

25-
RestcommFaultToleranceStrategy defaultStrategy = new RestcommFaultToleranceStrategy(10, Duration.create("1 minute"),
25+
RestcommFaultToleranceStrategy defaultStrategy = new RestcommFaultToleranceStrategy(10, Duration.create("1 minute"),
2626
new RestcommFaultToleranceDecider());
2727

2828
@Override

restcomm/restcomm.telephony/src/main/java/org/restcomm/connect/telephony/Call.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@ public Call(final SipFactory factory, final ActorRef mediaSessionController, fin
378378
transitions.add(new Transition(this.inProgress, this.leaving));
379379
transitions.add(new Transition(this.inProgress, this.failed));
380380
transitions.add(new Transition(this.inProgress, this.inDialogRequest));
381+
transitions.add(new Transition(this.inProgress, this.completed));
381382
transitions.add(new Transition(this.joining, this.inProgress));
382383
transitions.add(new Transition(this.joining, this.stopping));
383384
transitions.add(new Transition(this.joining, this.failed));
@@ -1726,6 +1727,11 @@ public Stopping(final ActorRef source) {
17261727
public void execute(Object message) throws Exception {
17271728
// Stops media operations and closes media session
17281729
msController.tell(new CloseMediaSession(), source);
1730+
if (fail) {
1731+
fsm.transition(message, failed);
1732+
} else {
1733+
fsm.transition(message, completed);
1734+
}
17291735
}
17301736
}
17311737

@@ -2473,11 +2479,15 @@ private void onMediaServerControllerStateChanged(MediaServerControllerStateChang
24732479

24742480
case INACTIVE:
24752481
if (is(stopping)) {
2476-
if (fail) {
2477-
fsm.transition(message, failed);
2478-
} else {
2479-
fsm.transition(message, completed);
2482+
if (logger.isDebugEnabled()) {
2483+
String msg = String.format("On MediaServerContollerStateChanged, message: INACTIVE, Call state: %s, Fail: %s", fsm.state(), fail);
2484+
logger.debug(msg);
24802485
}
2486+
// if (fail) {
2487+
// fsm.transition(message, failed);
2488+
// } else {
2489+
// fsm.transition(message, completed);
2490+
// }
24812491
} else if (is(canceling)) {
24822492
fsm.transition(message, canceled);
24832493
} else if (is(failingBusy)) {

restcomm/restcomm.testsuite/src/test/java/org/restcomm/connect/testsuite/telephony/DialRecordingTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ public synchronized void testDialClientAlice_BobDisconnects() throws Interrupted
222222
assertNotNull(recording);
223223
assertEquals(1, recording.size());
224224
double duration = recording.get(0).getAsJsonObject().get("duration").getAsDouble();
225-
assertTrue(duration==3.0);
225+
assertEquals(3.0, duration, 0);
226226
}
227227

228228
@Test
@@ -422,7 +422,7 @@ public synchronized void testRecordCall() throws InterruptedException, ParseExce
422422
assertNotNull(recording);
423423
assertEquals(1, recording.size());
424424
double duration = recording.get(0).getAsJsonObject().get("duration").getAsDouble();
425-
assertEquals(6.0, duration,1);
425+
assertEquals(3.0, duration,1);
426426

427427
metrics = MonitoringServiceTool.getInstance().getMetrics(deploymentUrl.toString(),adminAccountSid, adminAuthToken);
428428
assertNotNull(metrics);
@@ -490,7 +490,7 @@ public synchronized void testRecordCallWithAction() throws InterruptedException,
490490
assertNotNull(recording);
491491
assertEquals(1, recording.size());
492492
double duration = recording.get(0).getAsJsonObject().get("duration").getAsDouble();
493-
assertEquals(6.0, duration,1);
493+
assertEquals(3.0, duration,1);
494494

495495
metrics = MonitoringServiceTool.getInstance().getMetrics(deploymentUrl.toString(),adminAccountSid, adminAuthToken);
496496
assertNotNull(metrics);

0 commit comments

Comments
 (0)