LogicBlox 4.23


LogicBlox 4.23.1

Release Date: May 14, 2020

Corrected Issues

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

  • Modeler
    • Fixed a Javascript error that could with a filter in place with no positions passing the filter condition.

Known Issues

The issues listed below are known to exist in the 4.23.1 release.

  • Tools, Database, and Services
    • This release contains changes to some lb-workflow tasks related to workbook creation. These fixes have not been applied yet to lb.wb.CreateWorkbook, which means errors related to recent changes in the LB runtime that imposes restrictions on string lengths can still occur. Please note that this known issue does apply to lb.wb.util.CreateWorkbook.

LogicBlox 4.23.0

Release Date: May 8, 2020

What's New

LogicBlox 4.23.0 introduces the following enhancements:

  • Modeler
    • We've introduced a number of performance optimizations that improve the responsiveness of Modeler applications:

      • Better caching in the query generation layer by reusing cached queries whenever possible.
      • Fixed a bug that caused regenerating headings when you switch back and forth between views.
      • Changed the internals of the slice synchronization feature which improves responsiveness when switching between views with slice synchronizations.
      • Improved the rendering of the axis configuration panels (Columns, Rows, Measure, and Slices). This also improves responsiveness when switching between views. This optimization is especially noticeable on multi-sheet canvases with all axis configuration panels open.
      • Minor improvements in the internals of the MultiAxis library used by Modeler.

  • Tools, Database, and Services
    • lb-web has improved error reporting in protobuf service handling, removing unnecessary stack traces from log files and returning error messages to the client in some cases where the errors were previously just written to log files.

    • Updated lb-web-client HTTP host header to match HTTP 1.1 standards, including the port number in the header when a non-default port is used.

    • Extended the LogiQL Simplifier in the LogicBlox runtime libraries so that it can operate on P2P rules, allowing developers of a P2P module to instruct the Simplifier about how to rewrite and simplify their P2P rules. As part of this work, extended the simplification of equalities to aggregate and pgm P2P rules. Also resolved a bug related to the handling of equalities in aggregate P2P rules rewritten using the InsideOut algorithm.

    • Made improvements to using lb-server from the command line. A newline character is now output before exiting the command line of dlbatch so that the shell’s prompt starts at its own line. Also updated lb-server's help information.

Corrected Issues

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

  • Modeler
    • Fixed an issue where the user's scroll position wasn't restored correctly when switching back to a view.

    • The "Export" option in the sheet toolbar was disabled when the view configuration was explicitly set to Grid Mode. This issue has been resolved. This behavior was observable when the view was either configured with the Modeler IDE (where View Mode is a required setting of a sheet) or manually using a JSON sheet configuration containing an explicit configuration of Grid Mode (i.e. "viewMode": "grid").

  • Modeler IDE
    • Copy actions which include measures keyed at two different levels within the same dimension (e.g. Week and Month of the Calender dimension) will now only copy measures keyed at higher intersections (e.g. keyed at Month) when all positions of their lower intersections (e.g. keyed at Week level) should be copied as specified by the filter measure. This filter measure is now also applied correctly to the "Log Time In" and "Log User In" measures.

    • After deleting a dimension in the "Dimensions" view, the Modeler IDE did not update configurations of Displayable Dimensions which included or excluded this dimension. This has been fixed.

  • Tools, Database, and Services
    • Fixed a problem with removing a block where removing all rules defining an IDB predicate would correctly clear its content but would not update any downstream dependencies.

    • Fixed an issue with removing a block where a rule that required the insertion of a subtyping coercion would not be properly removed. Note that subtyping is deprecated, so you should be eliminating it from your codebase.

    • Since the 4.20 release, cloud-store checksum validation for multi-part downloads had been skipped and was producing a warning. This has been fixed and checksum validation is now working properly.

    • Fixed a SIGSEGV crash when no argument was given to the --exclude-file option of dlunit.

    • During sampling of default value predicates (part of the rule optimization process), we create subsamples for entity predicates in the keyspace. Investigation of some application workspaces showed huge numbers of roots for these subsamples, indicating that we were unnecessarily recreating subsamples many times. This has been corrected and should result in smaller workspaces sizes for some applications.

    • Several significant improvements have been made to linear recursion rules, including the following:

      • Linear recursion rules can now be evaluated with domain parallelism to improve their performance.

      • Comprehensive review of large parts of the code, cleaning it up, and reimplementing pieces where necessary to improve maintainability and reliability of the implementation.

      • Fixed several long-standing bugs in the implementation, including:

        • Enhanced long-running rule reports with details about full and incremental maintenance as well as input predicate sizes.

        • Better error detection and reporting for incorrect use of linear recursion that would previously cause internal runtime errors, runtime crashes, or infinite loops.

        • Fixed internal runtime error for incremental maintenance of linear recursion rules with no group-by variables.

        • Issue a warning if the "recursive case" predicate for a linear recursion rule may not be functional. If these predicates are not functional, linear recursion can produce unexpected results.

      • Updated the documentation. See the chapter on linear recursion in the LogicBlox Core Reference Manual.

Known Issues

The issues listed below are known to exist in the 4.23.0 release.

  • Tools, Database, and Services
    • This release contains changes to some lb-workflow tasks related to workbook creation. These fixes have not been applied yet to lb.wb.CreateWorkbook, which means errors related to recent changes in the LB runtime that imposes restrictions on string lengths can still occur. Please note that this known issue does apply to lb.wb.util.CreateWorkbook.

Installation Information

Install LogicBlox 4.23.0 by following the steps outlined below:

  1. Download the LogicBlox installation package for Linux or macOS from the LogicBlox developer website.
  2. Extract the tarball into a directory, which we refer to as <LOGICBLOX_HOME>.
  3. Run the following commands:
    source <LOGICBLOX_HOME>/etc/profile.d/logicblox.sh
    source <LOGICBLOX_HOME>/etc/bash_completion.d/logicblox.sh
    NOTE: these scripts automatically set all the necessary environment variables (please be aware that this script only works if you use bash as your shell). You might want to add these commands to your .bashrc.

Upgrade Information

  • Modeler
    • The HTML generated by Modeler for action buttons has been changed. To access Action buttons in Javascript (e.g. in the afterAction hook of the Modeler application configuration) you can now use document.querySelector(“#action-YOUR-ACTION-ID”).
    • The library containing the Modeler migration tool is included in the distribution under <LOGICBLOX_HOME>/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 --no-save <LOGICBLOX_HOME>/lib/npm/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 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 (e.g. 4.23.0).

      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; Apple macOS 10.10+ is supported for local development
    • Java Runtime Environment 8, update 101 or higher
    • Python 3.5 or higher
  • Client requirements
    • Applications using LogicBlox Modeler: Modeler supports major browsers not older than 1 year. Google Chrome provides the best performance.
    • Requirements for applications using non-LogicBlox Modeler components may vary per application.