LogicBlox 4.4.10

Executive Summary

Action messages can now contain HTML tags to format the message displayed to the user.

The Export to Excel function can now also export reference data.

The usability of the title bar for sheets has been improved to make it accessible even on small sheets.

Modeler now accepts unformatted decimal input values as percentages for percent formatted measures (e.g. 1.5
is interpreted as 1.5%) on the grid, the conditional formatting panel, and the filters panel.

Modeler now has a more consistent workflow for uncommitted (deferred or invalid) edits.

Tools and Services

Corrected logging problems with LB systemd services.

Fixed a race condition in the LB workflow driver.

Generic JSON services now support custom HTTP Status code.

Fixed a bug that caused rows to be excluded from TDX exports when an optional
column has a "false" value.

Implemented support for lb-web queues that allow applications to better control when
requests are processed by lb-web services.

TDX services now support constructors for both import and export operations, including
multi-keyed, and recursive constructors.

Fixed bug in LogiQL datetime:parse function that prevented time zones like "+05:30" from being parsed correctly.

Improved behavior of signal handling in the lb-server process.

Measure Service

Fix for querying attributes within a prev expression.

What's New

Modeler-js

Modeler can now display position-only metrics on the grid.
They will be presented on the grid and behave like checkbox cells.

These are highly recommended over boolean valued metrics, especially when used as mask filters or historical
locks.
The reason for this recommendation is that the Modeler actually ignores the value when applying mask filters.
In other words, a value of 'false' would still be included as part of the filter since we only join on the
keyspace.
To avoid these oddities, we recommend changing all boolean valued metrics to position only metrics unless
you
absolutely need all three states (true, false, empty).

Action messages can now contain HTML tags to format the message.

To enable this feature use the allowHTMLMessage property in the action configuration JSON. It is set disabled by default.

The Export to Excel function can now also export reference data.
The Include Reference Data option was added to the Excel Export window.
By checking this option you will get an additional sheet per entity-typed measure in exported configuration.
Such a sheet will contain all existing entities in two columns: Entity ID and Entity Label.

The usability of the title bar for sheets has been improved to make it accessible even on small sheets.
Each sheet now has a sheet header and a toolbar.
Opening and closing sheet headers and toolbars is controlled by the ... button at the upper right corner.

You can configure the initial opened/closed state in the view configuration:

Modeler now accepts unformatted decimal input values as percentages for percent formatted measures (e.g. 1.5
is interpreted as 1.5%) on the grid, the conditional formatting panel, and the filters panel. Before this fix, unformatted
input was processed differently in the conditional formatting panel (e.g. to get 1.5% you had to type 0.015).

Modeler now has a more consistent workflow for uncommitted (deferred or invalid) edits.

Tools and Services

Generic JSON services now support custom HTTP Status code.

TDX services now support constructors for both import and export operations, including
multi-keyed, and recursive constructors.

Implemented support for lb-web queues that allow applications to better control when
requests are processed by lb-web services. The workflow is as follows:

The application declares a queue service to be hosted at some prefix (e.g. “/queue/*”).

The application declares that certain service “/s" should have its requests managed
by this queue (e.g. queue_prefix[] = “/queue/*”).

Every request to “/s” is sent to the queue and a Location header is returned, which
allows the client to poll for the termination of the request (the exact same protocol
as async handlers is used, so the same client code can be reused).

Queues keep a cache of waiting/executing/terminated requests, which can be queried
from the queue service.

There are currently 2 queue implementations:

“immediate” simply executes every request immediately

“fifo” executes requests in first-in-first-out order, and can be configured
with max_executing (number of requests allowed to execute concurrently) and
max_waiting (number of requests accepted in a waiting queue until they can be
executed; requests are rejected with 503 if this limit is exceeded). These
configs can be changed dynamically.

Corrected Issues

The level creation forms now properly handles asynchronous validation errors.
Values updated by the user to fix these validation errors are now stored correctly instead of being reverted
to their old (invalid) values.

Entering more than one decimal point in a decimal typed cell no longer makes Modeler unresponsive. These inputs
are now correctly handled with a validation error.

Open address forms are now properly closed when a session time-out occurs.

Tools and Services

Prior to the 4.4.8 release which constained some changes to LB systemd services,
setting a "systemd" property to false in the lb-server.config or lb-web-server.config
files would have caused service log messages to go to files in
$LB_DEPLOYMENT_HOME/logs/current/ instead of to systemd logs managed by journalctl.
The 4.4.8 changes broke this behavior for lb-web-server logging. The problem has
been corrected in the 4.4.10 release.

Fixed a race condition between the LB workflow driver polling transactions and
workflow abort request that could cause tasks of the aborted workflow to remain
in INIT state and eventually get executed.

TDX exports were ignoring rows for predicate bindings with multiple optional columns,
when at least one of the columns has a default value which is not set. Even when other
optional columns had values, the rows would not be exported because one optional column
has the default value.

Fix for null pointer dereference in the LB runtime involving parallel rule execution.
The problem was caused by requesting domain decomposition for a predicate that is exempt
from sampling and for which no index has ever been requested.

Fixed bug in LogiQL datetime:parse function that prevented time zones like "+05:30" from being parsed correctly.

Improved behavior of signal handling in the lb-server process. In the past, the first SIGTERM or SIGINT sent
to the process would start aborting all in-flight transactions and then exit the process. If a second SIGTERM or SIGINT was
sent to the process while trying to abort, the process would immediately exit. This could result in undesirable database
state (partial data written, corrupted pages, etc). The new behavior will start aborting in-flight transactions upon the
first SIGTERM or SIGINT as before. But now subsequent SIGTERM or SIGINT signals will be ignored. If you need to immediately
stop an lb-server process without giving it a chance to cleanly exit, you can send a SIGKILL signal to the process.

NOTE: this script will set all the necessary
environment variables. You might want to add this command to your
.bashrc.

Upgrade Information

Modeler-js

In this release we've removed the formula editor.
It has been removed from the cogwheel menu (in the menubar) and if you specify
it in the sheet configuration JSON file it won't be shown in the application.
The modelingFeatures.editRules configuration option is not available anymore.
Feel free to remove it from the `modelerConfig` passed as props to the Modeler
component when you instantiate the Modeler application.

The /rules service was also removed as part of this change.

The library containing the modeler migration tool is included in the
distribution under lib/npm/modeler-migrations-<version>.tgz
and contains a command line tool for doing various transformations/migrations
of modeler configurations.

To use the npm module, you first need to install it by running
npm install path/to/modeler-migrations-<version>.tgz.
You will then be able to use the command line tool.
The module contains a README.md file that lists all available
transformations as well as detailed instructions for use.

To automatically upgrade a Modeler-js based application from one version to another,
run the upgrade script to upgrade between versions: