LogicBlox 4.4.14

Release Date: April 12, 2018

What's New

LogicBlox 4.4.14 introduces the following enhancements:


    • Users can now collapse and expand headers in Modeler's grid view. This functionality can be found in the header's context menu. For instance, right-click on a header and select 'Collapse All' to collapse all headers in the grid. Then, use the + icon on a header to expand it.

      This behavior can also be pre-defined in the view configuration JSON:

      Example 3. 

      For instance, when the levels Class, Subclass, Sku are on an axis and you want all Subclasses to be collapsed. You then have to set the expandOnly option to an empty array for the Subclass level.

            "id": "my-view",
            "pivotConfig": {
                "axis": {
                    "x": [
                        { "qualifiedName": "Product:class" },
                        { "qualifiedName": "Product:subclass", "expandOnly": [] },
                        { "qualifiedName": "Product:sku" }
                    "y": [
                        { "qualifiedName": "-:Measures" }
                    "z": [
                        { "qualifiedName": "Sales" }

      Example 4. 

      The following configuration displays all Skus for the Subclass with id subclass-2, the rest of the Subclasses are collapsed.

            "id": "my-view",
            "pivotConfig": {
                "axis": {
                    "x": [
                        { "qualifiedName": "Product:class" },
                        { "qualifiedName": "Product:subclass", "expandOnly": ["subclass-2"] },
                        { "qualifiedName": "Product:sku" }
                    "y": [
                        { "qualifiedName": "-:Measures" }
                    "z": [
                        { "qualifiedName": "Sales" }

      NOTE: This feature is not available on a grid containing dimension splits on the same axis or if there's an inlined field (displayMode = "NONE") in the dimension.

    • Modeler now provides the ability to install locks in the application workspace and have these locks displayed in Modeler's grid view. Installed locks will be displayed in the same way as the existing user locks. User locks now have a blue lock icon.

      Installed lock targets can be applied using the pivot:config:lock:installed_target_locks predicate.

      Example 5. 

      Let's say we want to lock Sales and Returns for all sku/store/day tuples where the day is prior to the current day. With previous LogicBlox versions, the following (or similar) steps were taken:

      1. Create a boolean metric with day as the intersection. We'll use HistLock as the metric name for this example.

      2. Install logic that populates HistLock for days that are locked per the specified calculation.

      3. For each metric that is locked by HistLock, populate the pivot:config:lock:lock predicate mapping the target metric to the lock metric.

      4. When an edit is made to Sales or Returns, Modeler would spread the historical lock to the correct base intersection for each measure and send the lock with the edit request.

      With this new version of LogicBlox, HistLock should be applied to Sales and Returns in the following manner:

      1. Apply the same steps 1 and 2 as above

      2. Create a CubiQL expression that spreads HistLock to the appropriate base intersection:

        (#HistLock) @ {sku,store,day}

      3. Populate the metric pivot:config:lock:installed_target_locks to associate the lock expression with each target metric.

        +pivot:config:lock:installed_target_locks(target_name, expr_string, convertible) <-
               target_name = "Sales",
               expr_string = "(#HistLock) @ {sku,store,day}",
               convertible = false
               target_name = "Returns",
               expr_string = "{(\"store-1\")} : {store} @ {sku, store}",
               convertible = false

        In previous LogicBlox versions, all installed locks were sent as non-convertible locks but this can now be specified per target lock.

      4. Restart the measure service.

        The measure service only needs to be restarted when the installed locks have been changed. If the lockable tuples specified by HistLock change, they will be reflected automatically in the grid without the need to restart the measure service.

      NOTE: Modeler will continue to support locks in the view configuration JSONs until 4.4.16, but these type of locks will not be shown in the grid.

    • Modeler will now limit the amount of data that can be displayed at once in Modeler's grid view. This limitation has been also been applied to panels such as the filters panel, the slice filters panel, and the level filters panel.

      The default limit is set to 10k members. This means data will be displayed only if every level on the grid contains less than 10k members. If a level contains more than 10k members, the user will be required to apply a filter for that level first.

      This default limit can be changed. You can set a value for the option in your Modeler's application configuration in modelerConfig.levelMembersQuantityThreshold. We highly recommend not to increase this limit.

      Example 6. 

            modelingFeatures: { ... },
            events: { ... },
            jsonSheetViewEnabled: true,
            levelMembersQuantityThreshold: 9000


    • Added a recomputeGraph command to dlbatch. This can be used in emergency situations to try to recompute a rule execution graph in a workspace. In the past, we've seen rare rule execution errors due to bad rule priority numbers. The recomputeGraph command will attempt to regenerate these numbers and can be used to try to patch an existing workspace.

    • Tracing support has been added to lb-workflow. Tracing can be enabled globally by setting the trace = true flag in the lb-workflow-driver.config file. Once the flag is set, the driver will log the traces in the console. These logs can then be processed exactly like the lb-web-server logs to display the time split of the task run.

      There is also an option to enable the tracing for individual runs if tracing is not desired for all the driver runs. To do so, simply add --trace in the command line arguments for the driver CLI call.

      NOTE: Not all the tasks support deep tracing (in which the server side calls are also traced). Here are some of the tasks that don't support deep tracing yet:

      • BackupWorkspace
      • CommitWorkbooks
      • CreateWorkbooks
      • DeleteWorkbooks
      • ExecuteLogiQL
      • JsonService
      • RefreshWorkbooks

    • The server code includes some smart pointer improvements which could potentially have a small performance benefit.


    • This release contains a new measure service query optimizer. There should be no observable difference other than improved performance of the optimizer.

Corrected Issues

The issues listed below have been corrected since the 4.4.13 release:


    • Users will experience much smoother and more reliable drag and drop behavior when dragging and reordering fields.

    • Minor fixes in the JSON Schema validation to prevent rejection of valid view configurations.

    • Modeler now correctly displays views with multiple sheets when using logicblox.min.js.


    • Fixed an error in the ordering of rule execution units that could generate invalid sequence numbers in some uncommon situations. The error could cause odd calculation problems or errors like "Duplicate key in hashtree" in the LB server logs.

    • User sessions are now invalidated when a user is made inactive through the credentials service. Before when a user was inactivated through the credentials service, the user could still continue accessing resources previously accessible until the session expires. Now the credentials service will invalidate the user session when the user is made inactive. Note that the user session will only be invalidated in the compute node where the credentials service is running, not for other nodes used by the application. This should be good enough for most scenarios, where an authenticated proxy acts as the front end for insecure resources.

    • Fixed an "illegal cast" error reported when exporting default valued predicates where the raw_string column format was used in a key column for the export service configuration.

    • Fixed a performance problem where a TDX import operation would not utilize available CPU resources at times when the import was executed after many export operations.


    • Composite aggregation now supports grouping along a dimension that is not mentioned in the composite, as long as the grouping is vacuous, meaning that the grouping is to the same level as the data. Previously, queries using these types of aggregations would produce an error.

Upgrade Information


    • Please use logicblox.min.js in your projects. The file logicblox.js is intended to use only by Modeler's developers and has no supplied source maps. Moreover, it is heavier and slower than its minified version. Please update your references to the logicblox.min.js. The non-minified file will be removed in future releases. This relates to logicbloxtestutils.js as well.

    • View layout modification has been disabled due to instability. This means it's no longer possible to resize or reposition a sheet inside a canvas with your mouse.

      If you have a modified layout saved in the view state, use the "Reset Canvas Layout" option from pivot cell's context menu. Modeler's canvas layout functionality is currently being improved and layout modification will be re-enabled once this work is completed.

    • The generated file percent_parent_rules.rules has been removed as it is no longer needed. You'll likely need to update the config.py in your project to remove it from the list of .rules files to install.

    • Modeler has been upgraded to React 16, that means global exports comming with logicblox.min.js such as React and ReactDOM are upgraded too. Please review the React migration guide.

      Some of the notable changes include:

      • React.createClass helper is obsolete and was moved to the separate create-react-class package.

      • React.DOM helpers are obsolete and were moved to a separate package. Our suggestion is to replace them with React.createElement.

      • React.PropTypes were moved to the separate prop-types package.

      • React Add-Ons were discontinued. react-addons-test-utils were replaced by react-dom/test-utils and createRenderer was moved to react-test-renderer/shallow.

      • Please stop using componentWillMount life-cycle hook and replace it with componentDidMount instead.

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


    • The "dialogue" metric type has been removed after a deprecation period. The same features (activating inactive blocks and parameters) have been available to all metrics for several releases now.

Installation Information

Installation Instructions

Install LogicBlox 4.4.14 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.14/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.

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.