3.2.0

Released July 2, 2021

New features

  • Settings' cache metrics

  • Heavy queries monitoring

  • New CometD settings support in live.properties and in admin page

  • WidgetQueryHandler Query Interceptors

Fixes and improvements

  • Multiple improvements for Non-Datasource queries

  • UI/UX improvements on the Non-Time-Based Widgets Tooltip

  • Fix inconsistencies in the way timespan boundaries are handled

  • [API] TableForm render now has access to the rowIndex

  • Fix console reducer tooltip

  • Cumulative fixes from 3.1.1 stable version

    • Fix console reducer tooltip

  • Cumulative fixes from 3.0.3 stable version

    • Opening and closing filter dropdown right after shows an unnecessary alert

    • Grouped Axes (chart header labels) do not update in widget resize

    • Value widget font is too small

    • Console download progress should be rounded to 2 decimal places

    • Broken team audience monitoring widget

  • Cumulative fixes from 2.29.10 stable version

    • Filter search autocomplete does not find by partial names

    • Download file extension conflict with dashboard name

    • Unlogged users accessing internal URLs are not being redirected to the original URL

  • Cumulative fixes from 2.28.4 stable version

    • API Improvement for Extensions status

    • API Improvement for Datasource status

    • UI/UX improvement on the Ranking widget

    • Performance improvement on the Rulealert page

    • Fix crashes on the Web vitals

  • Cumulative fixes from 2.27.3 and 2.28.3 stable version

    • UI/UX improvements on the Filters tag component

    • Fix Purge Rules with Storage Hints

    • MongoDB Queries aren't showing fields with null value.

    • Performance improvements on the Health check

Details

WidgetQueryHandler Request Interceptors

This enable users to intercept WidgetRequests before Live runs them. The feature adds 1 method to the Live API.

public Action addWidgetQueryInterceptor(
    @NotNull String widgetType, @NotNull WidgetQueryInterceptor interceptor
)

and creates a new class, the WidgetQueryInterceptor which has the following required API:

public interface WidgetQueryInterceptor {
    WidgetQueryData makeQueries(
            WidgetQueryRequest request, WidgetQueryData widgetQueryData
    );
}

The motivation behind this feature is that you can register interceptors to widget types (kind) and modify the widget query handler's response as needed.

  • Add arbitrary queries

    • You can create frontend configurations and based on them add queries at will.

  • Add variables to the widget context

    • You can modify the query context to any value desired.

Basically, it allows the developer to change the entire WidgetQueryData.

You can combine multiple interceptors per type, they will be run by order of registration and the results from each interceptor will be chained into the next one in the execution order.

Settings' cache metrics

Live continuously and automatically collects metrics about the settings cache, those metrics can be accessed using pipes or through the system log.

All the metrics are related to the settings cache and can be accessed via query pipes.

In total there are eleven metrics that came from the settings cache and can be accessed using the following query:

__metrics metric:settings.cache

Hit

The Hit metric reports the hit number in the settings cache, i.e., the number of times an accessed setting is present in the cache.

The higher this value, the greater the cache accuracy.

Miss

The Miss metric reports the number of cache misses, i.e., the number of times an accessed setting is not present in the cache.

The higher this value, the greater the number of writes in the cache.

Inserts

The Inserts metric reports the total number of inserts in the cache (by set + by miss), i.e., is a sum of all inserts made to the cache.

This metric is divided into two metrics:

  • Insert by set - This metric reports the number of inserts of new settings. Every time a new setting is created it is immediately added to the cache.

  • Insert by miss - This metric reports the number of inserts after misses. Every time there is a miss in the settings cache, the setting that generated this miss is inserted into the cache.

Overflow

The Overflow metric reports the number of cache overflows, i.e., whenever the total cache size is exceeded, an overflow occurs.

This metric can indicate whether the cache is correctly sized or not.

Removes

The Inserts metric reports the total number of removal in the cache (by delete + by overflow), i.e., is a sum of all cache removals.

This metric is divided into two metrics:

  • Remove by delete - This metric reports the number of deleted settings removals. Every time a setting is deleted from the system, if it was in the cache, it is also removed from the cache.

  • Remove by overflow - This metric reports the number of removals after an overflow. Every time a cache overflow occurs, keys that were least recently accessed are removed while the current cache size is greater than the maximum cache size.

Max Weight

The Max Weight metric reports the cache max weight, i.e., reflects the maximum size of settings the cache will store.

This metric is constant and serves as a reference for possible changes in cache size.

Current Weight

The Current Weight metric reports the cache current weight, i.e., reflects the cache size during the analyzed period.

The higher this metric, the greater the number of settings persisted in the cache. If this value exceeds the maximum cache size, it will result in overflows.

Last updated