mirror of https://github.com/OpenVidu/openvidu.git
openvidu-server: close sessions upon nodeCrash refactoring
parent
880d5ced54
commit
fa9268b124
|
@ -86,6 +86,10 @@ public class FixedOneKmsManager extends KmsManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void removeMediaNodeUponCrash(String mediaNodeId) {
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
protected void postConstructInitKurentoClients() {
|
protected void postConstructInitKurentoClients() {
|
||||||
|
|
|
@ -113,7 +113,7 @@ public abstract class KmsManager {
|
||||||
|
|
||||||
final protected Map<String, Kms> kmss = new ConcurrentHashMap<>();
|
final protected Map<String, Kms> kmss = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
private SessionManager sessionManager;
|
protected SessionManager sessionManager;
|
||||||
|
|
||||||
public KmsManager(SessionManager sessionManager) {
|
public KmsManager(SessionManager sessionManager) {
|
||||||
this.sessionManager = sessionManager;
|
this.sessionManager = sessionManager;
|
||||||
|
@ -217,13 +217,15 @@ public abstract class KmsManager {
|
||||||
final long timeOfKurentoDisconnection = kms.getTimeOfKurentoClientDisconnection();
|
final long timeOfKurentoDisconnection = kms.getTimeOfKurentoClientDisconnection();
|
||||||
sessionEventsHandler.onMediaNodeCrashed(kms, timeOfKurentoDisconnection);
|
sessionEventsHandler.onMediaNodeCrashed(kms, timeOfKurentoDisconnection);
|
||||||
|
|
||||||
|
// Close all session with reason "nodeCrashed"
|
||||||
log.warn("Closing {} sessions hosted by KMS with uri {}: {}", kms.getKurentoSessions().size(),
|
log.warn("Closing {} sessions hosted by KMS with uri {}: {}", kms.getKurentoSessions().size(),
|
||||||
kms.getUri(), kms.getKurentoSessions().stream().map(s -> s.getSessionId())
|
kms.getUri(), kms.getKurentoSessions().stream().map(s -> s.getSessionId())
|
||||||
.collect(Collectors.joining(",", "[", "]")));
|
.collect(Collectors.joining(",", "[", "]")));
|
||||||
|
closeAllSessionsInKms(kms, EndReason.nodeCrashed);
|
||||||
|
|
||||||
kms.getKurentoSessions().forEach(kSession -> {
|
// Remove Media Node
|
||||||
sessionManager.closeSession(kSession.getSessionId(), EndReason.nodeCrashed);
|
log.warn("Removing Media Node {} after crash", kms.getId());
|
||||||
});
|
removeMediaNodeUponCrash(kms.getId());
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
@ -313,6 +315,18 @@ public abstract class KmsManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void closeAllSessionsInKms(Kms kms, EndReason reason) {
|
||||||
|
// Close all active sessions
|
||||||
|
kms.getKurentoSessions().forEach(kSession -> {
|
||||||
|
sessionManager.closeSession(kSession.getSessionId(), reason);
|
||||||
|
});
|
||||||
|
// Close all non active sessions configured with this Media Node
|
||||||
|
sessionManager.closeNonActiveSessions(sessionNotActive -> {
|
||||||
|
return (sessionNotActive.getSessionProperties().mediaNode() != null
|
||||||
|
&& kms.getId().equals(sessionNotActive.getSessionProperties().mediaNode()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public abstract List<Kms> initializeKurentoClients(List<KmsProperties> kmsProperties, boolean disconnectUponFailure)
|
public abstract List<Kms> initializeKurentoClients(List<KmsProperties> kmsProperties, boolean disconnectUponFailure)
|
||||||
throws Exception;
|
throws Exception;
|
||||||
|
|
||||||
|
@ -322,6 +336,8 @@ public abstract class KmsManager {
|
||||||
public abstract void decrementActiveRecordings(RecordingProperties recordingProperties, String recordingId,
|
public abstract void decrementActiveRecordings(RecordingProperties recordingProperties, String recordingId,
|
||||||
Session session);
|
Session session);
|
||||||
|
|
||||||
|
protected abstract void removeMediaNodeUponCrash(String mediaNodeId);
|
||||||
|
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
protected abstract void postConstructInitKurentoClients();
|
protected abstract void postConstructInitKurentoClients();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue