LogicBlox 4.4.10

Release Date: December 12, 2017

Executive Summary

LogicBlox 4.4.10 contains the following changes:

  • Modeler-js

    • Modeler can now display position-only metrics on the grid.

    • 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.

    • Fix for null pointer dereference in the LB runtime involving parallel rule execution.

    • 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.

      Example 9. 

      {
          "id": "action_id",
          "is_enabled": true,
          "links": {
              "execute": "/path-to-action"
          },
          "allowHTMLMessage": true
      }

    • 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:

      Example 10. 

      {
        "module": "SheetView",
        "layout": {
            "showSheetHeader" : true,
            "showSheetToolbar" : true
        },
        ..
      }

    • 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 issues listed below have been corrected since the 4.4.9 release:

  • Modeler-js

    • Sorting via the context menu and via the sort icon no longer resets column widths and row heights.

    • 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.

  • Measure Service

    • Fix for querying attributes within a prev expression.

Installation and Upgrade information

Installation Instructions

Install LogicBlox 4.4.10 by following the steps outlined below:

  1. Download the installation package.
  2. Extract the tarball in <YourPreferredInstallDirectory>
  3. Run the following command:
    source <YourPreferredInstallDirectory>/logicblox-4.4.10/etc/profile.d/logicblox.sh
    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:

                  ./node_modules/.bin/migrate-modeler --fromVersion <prevVer> --toVersion <toVer> /path/to/my/modelerapp

      where the version numbers refer to LogicBlox releases.

      NOTE: If you installed the npm module globally, you won't need the ./node_modules/.bin prefix on the command.

Release Information

Server requirements
Operating System: 64 bit Linux; macOS 10.10+ is supported for local development.
Java Runtime Environment 8
Python 2.7 or higher
Client requirements
Applications using modeler-js User Interface Components: Google Chrome or Internet Explorer 11+
Requirements for applications using non-modeler-js components may vary per application.