Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
fairblue
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Deploy
Releases
Container Registry
Model registry
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
hosting
chat
fairblue
Commits
7e57e2e1
Commit
7e57e2e1
authored
8 years ago
by
Richard Alam
Browse files
Options
Downloads
Patches
Plain Diff
- minimize time it needs to detect that jws died after pausing
parent
2b5a9afe
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/server/sessions/Screenshare.scala
+34
-24
34 additions, 24 deletions
...ebutton/app/screenshare/server/sessions/Screenshare.scala
with
34 additions
and
24 deletions
bbb-screenshare/app/src/main/scala/org/bigbluebutton/app/screenshare/server/sessions/Screenshare.scala
+
34
−
24
View file @
7e57e2e1
...
...
@@ -119,7 +119,14 @@ class Screenshare(val sessionManager: ScreenshareManager,
private
var
lastJwsStatusUpdate
=
0L
private
var
sessionStartedTimestamp
:
Long
=
0L
private
val
SESSION_START_TIMEOUT
=
60
private
val
JWS_START_TIMEOUT
=
60
// The number of seconds we wait for the JWS to launch when
// resuming sharing. Sometimes, on PAUSE, the JWS crashes but
// the server doesn't detect it before the presenter resumes sharing.
private
val
JWS_RESTART_TIMEOUT
=
10
private
var
jwsLaunchTimeout
=
JWS_START_TIMEOUT
// The last time we received a pong response from the client.
// We need to check if the client is still alive. If the client
...
...
@@ -419,18 +426,20 @@ class Screenshare(val sessionManager: ScreenshareManager,
log
.
debug
(
"Received RestartShareRequestMessage from userId=["
+
msg
.
userId
+
"]"
)
}
val
sessionToken
=
screenShareSession
.
get
val
streamId
=
generateStreamId
(
sessionToken
)
val
token
=
streamId
val
userId
=
trimUserId
(
msg
.
userId
).
getOrElse
(
msg
.
userId
)
val
session
=
ActiveSession
(
this
,
bus
,
meetingId
,
streamId
,
token
,
record
,
userId
)
activeSession
=
Some
(
session
)
sessionStartedTimestamp
=
TimeUtil
.
currentMonoTimeInSeconds
()
status
=
START
screenShareSession
match
{
case
Some
(
sessionToken
)
=>
val
streamId
=
generateStreamId
(
sessionToken
)
val
token
=
streamId
val
userId
=
trimUserId
(
msg
.
userId
).
getOrElse
(
msg
.
userId
)
val
session
=
ActiveSession
(
this
,
bus
,
meetingId
,
streamId
,
token
,
record
,
userId
)
activeSession
=
Some
(
session
)
sessionStartedTimestamp
=
TimeUtil
.
currentMonoTimeInSeconds
()
status
=
START
jwsLaunchTimeout
=
JWS_RESTART_TIMEOUT
case
None
=>
log
.
warning
(
"Restarting sharing but no previous session for meetingId="
+
meetingId
)
}
}
private
def
handleStartShareRequestMessage
(
msg
:
StartShareRequestMessage
)
{
...
...
@@ -461,6 +470,8 @@ class Screenshare(val sessionManager: ScreenshareManager,
currentPresenterId
=
Some
(
msg
.
userId
)
jwsLaunchTimeout
=
JWS_START_TIMEOUT
screenShareSession
foreach
{
sss
=>
bus
.
send
(
new
ScreenShareStartRequestSuccessResponse
(
meetingId
,
msg
.
userId
,
token
,
msg
.
jnlp
,
streamId
,
sss
))
...
...
@@ -475,9 +486,7 @@ class Screenshare(val sessionManager: ScreenshareManager,
}
def
processStaleSession
()
:
Unit
=
{
if
(
log
.
isDebugEnabled
)
{
log
.
debug
(
"Stopping JWS. GetSharingStatus for streamId=["
+
msg
.
streamId
+
"] session stale."
)
}
log
.
warning
(
"Stopping JWS. GetSharingStatus for streamId=["
+
msg
.
streamId
+
"] session stale."
)
sender
!
new
GetSharingStatusReply
(
STOP
,
None
)
}
...
...
@@ -496,7 +505,7 @@ class Screenshare(val sessionManager: ScreenshareManager,
}
sender
!
new
GetSharingStatusReply
(
START
,
Some
(
as
.
streamId
))
case
None
=>
log
.
warning
(
"
status == START but no active session for
streamId=["
+
msg
.
streamId
+
"]."
)
log
.
warning
(
"
Forcing stop. No active session for meetingId="
+
meetingId
+
",
streamId=["
+
msg
.
streamId
+
"]."
)
sender
!
new
GetSharingStatusReply
(
STOP
,
None
)
}
}
...
...
@@ -552,7 +561,7 @@ class Screenshare(val sessionManager: ScreenshareManager,
}
if
(
status
!=
STOP
)
{
if
(
jwsStarted
(
msg
.
session
))
{
if
(
jwsI
sStillAlive
(
msg
.
session
))
{
if
(
isJw
sStillAlive
(
msg
.
session
))
{
if
(
isClientStillAlive
(
msg
.
session
))
{
//sessionAudit ! StartSendingAudit(screenShareSession)
}
...
...
@@ -563,8 +572,8 @@ class Screenshare(val sessionManager: ScreenshareManager,
private
def
jwsStarted
(
session
:
String
)
:
Boolean
=
{
val
currentTimeInSec
=
TimeUtil
.
currentMonoTimeInSeconds
()
if
((
status
==
START
)
&&
(
currentTimeInSec
-
sessionStartedTimestamp
>
SESSION_START_TIMEOUT
))
{
log
.
warning
(
"JWS failed to start
.
session=
{}"
,
session
)
if
((
status
==
START
)
&&
(
currentTimeInSec
-
sessionStartedTimestamp
>
jwsLaunchTimeout
))
{
log
.
warning
(
"JWS failed to start
for meetingId="
+
meetingId
+
",
session=
"
+
session
)
stopScreenSharing
(
session
)
false
}
else
{
...
...
@@ -573,13 +582,13 @@ class Screenshare(val sessionManager: ScreenshareManager,
}
private
def
jwsI
sStillAlive
(
session
:
String
)
:
Boolean
=
{
private
def
isJw
sStillAlive
(
session
:
String
)
:
Boolean
=
{
val
currentTimeInSec
=
TimeUtil
.
currentMonoTimeInSeconds
()
if
((
status
==
RUNNING
||
status
==
PAUSE
)
&&
(
lastJwsStatusUpdate
>
0
)
&&
if
((
status
==
RUNNING
||
status
==
PAUSE
)
&&
(
lastJwsStatusUpdate
>
0
)
&&
(
currentTimeInSec
-
lastJwsStatusUpdate
>
LAST_JWS_STATUS_UPDATE_TIMEOUT
))
{
log
.
warning
(
"Did not receive status update from JWS. Assume it is dead. session={}"
,
session
)
log
.
warning
(
"Did not receive status update from JWS. Assume JWS crashed for meetingId="
+
meetingId
+
",session="
+
session
)
stopScreenSharing
(
session
)
false
}
else
{
...
...
@@ -594,7 +603,8 @@ class Screenshare(val sessionManager: ScreenshareManager,
private
def
isClientStillAlive
(
session
:
String
)
:
Boolean
=
{
val
currentTimeInSec
=
TimeUtil
.
currentMonoTimeInSeconds
()
if
((
lastClientPongReceivedTimestamp
>
0
)
&&
(
currentTimeInSec
-
lastClientPongReceivedTimestamp
>
PONG_TIMEOUT_SEC
))
{
log
.
warning
(
"Did not receive pong from client. Assume it is dead. streamId={}"
,
session
)
log
.
warning
(
"Did not receive pong from client. Assume client crashed for meetingId="
+
meetingId
+
",streamId="
+
session
)
stopScreenSharing
(
session
)
false
}
else
{
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment