This feature manages writing the conference view state to Cassandra DB for consumption by the MMTel Conference Subscription feature.
Feature cheat-sheet
B2BUA Instance | SAS Support | Originating / Terminating | Point(s) in Session Plan | Network Operator Data | Subscriber Data | Stateful or Stateless | POJO Feature or SBB Feature |
---|---|---|---|---|---|---|---|
MMTEL |
Yes |
Both |
|
No |
No |
Stateful |
POJO |
Statistics
MMTelCONFViewUpdate
statistics are tracked by the sentinel.volte.sip
SBB and can be found under the following parameter set:
SLEE-Usage → sentinel.volte.sip service → sentinel.volte.sip SBB → feature → MMTelConfViewUpdate
Name | Type | Description |
---|---|---|
Started |
Counter |
Incremented each time the feature runs. |
FailedToStart |
Counter |
Incremented when Sentinel VoLTE encounters an error while attempting to start the feature. |
IssuedWarning |
Counter |
Incremented when a non-fatal problem is encountered and the feature issues a warning. |
FailedDuringExecution |
Counter |
Incremented when a fatal problem is encountered and the feature cannot execute correctly. |
TimedOut |
Counter |
Incremented when the feature takes too long to complete and Sentinel VoLTE aborts execution. |
CassandraQueryFailed |
Counter |
Incremented when there is an issue preparing, binding or executing a query intended to update the conference view state in Cassandra. |
CassandraQueried |
Counter |
Incremented once a query is executed asynchronously against Cassandra and a response is pending. |
CassandraQuerySucceeded |
Counter |
Incremented upon receipt of a success response from Cassandra with respect to a pending conference view update query. |
CassandraQueryErrorResult |
Counter |
Incremented upon receipt of an error result from Cassandra with respect to a pending conference view update query. |
Session state inputs and outputs
Inputs
Name | Type | Description |
---|---|---|
JoinedParticipants |
MMTelCONFConnectionRequestQueue |
Provides participant connection information that forms the conference view state. |
ConferenceID |
String |
Unique identifier assigned to distinguish individual conference calls. |
ConferenceHasEnded |
Boolean |
A flag that gets set during the conference end state to indicate the conference has ended. |
Behaviour
Name |
|
---|---|
Applicable contexts |
SIP service |
Prerequisite features |
|
This feature is to be used in conjunction with the MMTel Conference and MMTel Conference Subscription features.
It is run after each invocation of the MMTel Conference feature as well as when a CassandraQueryResultEvent
, CassandraErrorEvent
or EndActivityEvent
is received.
The feature is responsible for tracking and reconciling the differences between the actual conference state and the conference view state in Cassandra, updating this view when it is necessary.
Invoked after MMTel Conference feature
The feature first checks whether the ConferenceHasEnded
flag has been raised by the MMTel Conference feature.
If so, the feature then checks to see whether a ConferenceViewRemovalDelay
config property has been specified.
This states the number of milliseconds to wait after observing the ConferenceHasEnded
flag before cleaning up the conference view state in Cassandra.
This ensures all conference subscriptions can end and be cleaned up prior to the conference view state.
Therefore, if ConferenceViewRemovalDelay
is non-zero, the feature will wait the allocated time before cleaning up, otherwise it will initiate cleanup procedures immediately.
Once the feature has established that either the conference has not ended or that it is ready to clean up the conference view state, it then determines the actions necessary to achieve this. The feature reads the actual conference state from sessionState fields defined in the MMTel Conference library and uses this to form the target state which the view state in Cassandra should reflect. The feature then reads the confirmed state, that is, the conference view state currently stored in Cassandra. However, as opposed to reading this from Cassandra directly, the feature reads this from a local session state field that it maintains and updates only on receipt of a successful write query from Cassandra. The feature then checks there are no other pending queries, and whether the target and confirmed states are different. If so, it then initiates an update to the Cassandra view state and signals that the feature is waiting.
All data written to Cassandra by the MMTelCONFViewUpdate feature specifies a TLL based on either the MaxCallDuration or ConferenceViewRemovalDelay config properties.
This ensures that even if the MMTelCONFViewUpdate feature fails to clean up the conference view state data for some reason, the data will automatically get dropped after at most 24 hours.
|
Invoked by a CassandraQueryResultEvent
When the feature receives a success response on a query, it updates the local view state according to the contents of the successful query. Following this, it re-checks that the actual conference state matches the view state in Cassandra. If it does not match it will then initiate another update to the Cassandra view state and signal that the feature is waiting. Otherwise, if it does match, it will signal that the feature has finished.
Invoked by a CassandraErrorEvent
When the feature receives an error response on a query, it finishes without updating the Cassandra view state nor its local view state. Instead, any mismatch between the actual conference state and Cassandra will be resolved following the next invocation of the MMTel Conference feature. This is in conjunction with any other state changes that may have occurred during this time.
Cassandra Schema
The Cassandra schema for creating the keyspace and table that the MMTel Conference View Update feature writes to is defined in the sentinel-volte-cassandra-schema
directory.
The table conference_state
is created under the opencloud_mmtel_conference_view
keyspace and defines the following columns.
Column | Type | Description |
---|---|---|
conference_endpoint_status |
text |
Status of a participant, can be one of: connected, disconnected or on-hold |
conference_id |
text (unique) |
16 character alphanumeric string prefixed by “mmtel-conf-” (common amongst all participants) |
connection_id |
text (unique) |
Identifier for a participant as we cannot guarantee their ParticipantID is unique |
participant_id |
text (URI) |
Identifier for the participant |
participant_display_text |
text |
Specifies how the participant should be displayed in the call |
participant_requested_privacy |
boolean |
Whether the conference participant wishes to anonymize their identity |
conference_ended |
boolean |
Whether the conference has ended |
last_update_time |
timestamp |
When the participant’s details were last updated |
Both the conference ID and connection ID form the primary keys for the table. Currently, the table defines a time to live value of 172800 seconds (two days), to ensure any residual state from a finished conference call gets cleaned up (should the feature fail to clean it up prior).
Interactions
MMTel Conference feature
In conjuntion with being invoked after the MMTel Conference feature,
the MMTel Conference View Update feature also reads session state written by the MMTel Conference feature to determine the current conference view state.
This includes the JoinedParticipants
field which returns a MMTelCONFConnectionRequestQueue instance,
a collection of MMTelCONFConnectionRequest objects that describe each participant connection to the conference.
The feature also reads the ConferenceID
and ConferenceHasEnded
session state fields directly for retrieving data common to all participants in the conference.
The MMTel Conference View Update feature does not write any data that is used by the MMTel Conference feature. All session state fields written by this feature are only used internally.
MMTel Conference Subscription feature
This feature is exclusively responsible for keeping an up-to-date representation of the conference state in Cassandra. It, therefore, only writes data to Cassandra. This data continues to be made available for the duration of the conference solely for consumption by the MMTel Conference Subscription feature. The MMTel Conference Subscription feature uses this data to inform UE subscribed to the conference of the current conference state via sip NOTIFY transactions.