All notable changes to this project will be documented in this file. We follow the Semantic Versioning 2.0.0 format.
The service is rewritten from the ground, there is no backward compatibility.
- Each Report contain information about which call it belongs to
- Use the unified communication schema published here: https://github.com/ObserveRTC/schemas
- New configuration structure
- Using in-memory distributed storage grid to share information
- having different sinks to forward reports
- graphql package
- Secure websocket connections
- Added
security
package targeting security concerns for observer - Added Websocket security through accessToken part of the request the websocket sending.
- Added configuration
observer.security.websockets.expirationInMin
for explicit expiration of websocket access tokens
- ExtensionStats Report was not made. It is fixed now.
- Make
/config
endpoint to rule all possible runtime configuration changes - Add AsciiArt logo to print at startup (most important!)
- New endpoint:
/config
to change any configuration - ObserverConfigDispatcher to dispatch config changes runtime
- ConfigEntriesDispatcher to listen config repository changes in Hazelcast
- ConfigDTO to store configurations in hazelcast repository
configs
package to bundle all config structures, stores and dispatchersConfigOperations
to detect changes in a config mapConfigNode
to help identifying Config map nodesConfigHolder
to hold configurations and renew it accordingly
/pcFilters
endpoint is removed due to/config
endpoint/callFilters
endpoint is removed due to/config
endpoint/sentinels
endpoint is removed due to/config
endpoint/servicemappings
endpoint is removed due to/config
endpoint
- SentinelsDTO to SentinelConfig as it become part of the config
- CallFilterDTO is removed from Hazelcast repository, and become CallFilterConfig as it is part of a config object
- PeerConnectionFilterDTO from Hazelcast repository, and become PeerConnectionFilterConfig as it is part of a config object
- ServiceMappings from Hazelcast repository, and become part of the config object
- CollectionFilterDTO from Hazelcast repository, and become CollectionFilterConfig as it is part of a config object
- Connectors Can be changed dynamically through
/config
endpoint in runtime
- Add
framewidth
, andframeHeight
fields to tracks. - Change Report schema
- Add Json Encoder to the encoder type, in order to transform avro reports to json format
- Add
format
to encoder config to indicate the output format (bytes
,object
) depending on the sink requirements - Added exposed metric
call_durations_in_mins
reports the duration of an ended call at the time it is ended - Add marker field to the PeerConnectionSample schema
- Added new address for pc samples
/pcsamples/{serviceUUID}/{mediaUnitId}
- Add Bson Encoder to the encoder type
- Add MongoSink to the sinks
- Change the documentation to asciidoc
- Add Obfuscator transfromations
- Websocket URL address /pcsamples/{serviceUUID}/{mediaUnitId}/
SourceSample
class can serve as a general intermediate object for different kind of source types- Configuration for sources.pcSamples
Sources
singletone object to funnel different type of sources- Encoders concept, to make different type of encoding for sink for reports possible
AvroEncoder
,AvroEncoderBuilder
,EncoderBuilder
for encoding
- Websocket URL address /{serviceUUID}/{mediaUnitId}/v20200114/json
- Configuration property security.dropUnknownServices as this option will belongs to the configurable sources.
- Sentinels checking peer connections distinguished from calls
- SSRCs attribute from callFiltersDTO
- packetlost metric exposed by inbpundRTPMonitor now has positive values.
- Use Prototype instead of Singletone at SentinelMetricsProvider to have more than one sentinel
- /callfilters endpoint (GET, PUT, DELETE, POST)
- /pcfilters endpoint (GET, PUT, DELETE, POST)
- /sentinels endpoint (GET, PUT, DELETE, POST)
- /servicemaps endpoint (GET, PUT, DELETE, POST)
- Sentinels to watch calls periodically going through the pipeline and expose metrics.
- Security improvements by adding configuration to drop unmapped samples.
- /home endpoint for multiple OAuth2 support (Google, and AWS are added, maybe more comes)
- All type of DTO added in
0.6.x
. - All previously created Task objects
- Illmatched calls by fixed SSRCs without call names.
- WeakLocks to handle timeouts
- Fix null exception thrown when user media does not have pc uuid.
- Fix null tag value in report counting.
repositories
package to useChainedTasks
newly created object performing tasks in a transactional manner.- All DTO objects used to store in hazelcast in-memory data grid
This version added a so called Sentinel
concept to the Observer, so Calls and Peer Connections
can be filtered and exposed metrics through prometheus can be observed
This version removed MySQL dependency completely and used Hazelcast as distributed database. This gives a possibility to scale observer without scaling the underlying database. Since Hazelcast can only be embedded in java this also bounds the project to Java.
This version was the first version with the new schema (Reports v2, and PeerConnectionSample from the observer-js endpoint).
This version started matching calls based on SSRC of reported peer connections.
This version was build as a proof of concept to accept samples from javascript endpoint and using kafka streams to process them and forward generated reports to kafka. The underlying database was MySQL.