LogicBlox 4.12.0

Release Date: May 7, 2019

What's New

LogicBlox 4.12.0 introduces the following enhancements:

  • Modeler
    • Modeler now generates mapping measures for first/last hierarchies which can be used for dicing in CubiQL expressions. These mapping measures (e.g. Calendar:Day:month_first and Calendar:Day:month_last) are position-only with a single key (e.g. Day). When added to the grid, these measures will be displayed as read-only.

    • Improved the usability of calculator expressions and spread operations (i.e. input after the =) for scaled measures.

      Example 1. 

      Let's assume we have a cell holding the raw value 100000 for a measure with scale factor 100. Because it's a scaled measure, Modeler displays the scaled value 1000.

      • =*2 results in the scaled value 2000.
      • =/2 results in the scaled value 500.
      • =+2 results in the scaled value 1002.
      • =+-2 results in the scaled value 998.
      • =50R entered at an aggregated level results in a replicate spread of the scaled value 50.

    • We now provide the ability to disable Modeler's data import feature. This can be accomplished by adding the flag enableDataImport: false in the modelingFeatures section of you Modeler configuration JSON file. If this flag is not provided, we enable the data import feature by default.

  • Tools, Database, and Services
    • Workspace archive and restore functionality included with this release is now ready for applications to use. This functionality is intended to help migrate workspaces across LogicBlox releases. The lb archive command produces a set of files that should be independent of a particular release and that can be used with the lb restore command to create a new workspace that is equivalent to the original. All branch structure, schema, and data will be stored in the archive and recreated in new workspaces built with the restore command.

      Note that the files in a workspace archive should be treated as immutable and should not be changed under any circumstances. Doing so can result in a restored workspace with invalid data or that behaves unexpectedly.

      There is no support for any type of schema or data conversion between an archive and restore operation currently. You may also see that a restored workspace occupies more space on disk compared with the original workspace. This can happen if the original workspace has a complex branch structure with many data pages shared across the branches. The archive/restore infrastructure does not currently attempt to duplicate the structure of shared data pages in the restored workspace. This should not be an issue for our typical deployed application workspaces.

      For more information, see the lb archive --help and lb restore --help commands.

    • Added a scan_branches configuration option to lb-web-server.config. If set to true, all branches in a workspace will be scanned for service definitions when lb-web is started. If false (the default), only the default branch (also known as the master branch for workbook applications) will be scanned.

    • lb-web handlers can now specify a failure handler that can respond with arbitrary MIME content rather than just text/plain or text/html.

    • Added support for incremental maintenance of inventory P2P rules when an extension atom occurs in the body.

    • Added perf logging messages that clarify when indices are actually getting created versus when existing indices are found and reused.

  • Measure service
    • The optimize flag in the VarBinding protocol message has been removed.

    • The headersort aggregation method has been removed.

    • Added textual syntax for the keysort aggregation method. However, it is possible that we may reclassify keysort to be another kind of expression rather than an aggregation in the future.

Corrected Issues

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

  • Modeler
    • Conditional formatting for the "is empty" condition based on a different entity-typed measure now works as expected by checking the value of the label (which could be empty) instead of the ID.

    • In some corner cases, the entity/string-typed measure filter didn't correctly display available (selectable) and unavailable (greyed out) options. This has been fixed.

    • Modeler now properly positions the "More..." button in the toolbar of a sheet view.

    • Fixed rendering issue for wrapped text cells in Microsoft Edge.

    • Fixed an issue which prevented users from using Chart Mode for views without any measures on the Measures axis.

    • For installed locks, Modeler now uses the composite spread method (e.g. first or last) defined for the locking measure to determine whether cells need to be displayed as read-only for levels above base.

    • Modeler is now able to handle refinement expressions (i.e. refine M @ I) in the CubiQL expression used to install locks on measures.

    • The option to cancel a running export is now clickable. This option can be found in the message box that's being displayed when the user clicks on the greyed out Export option in the toolbar. Before this fix, the user was not able to reach the functionality that allows the cancellation of a running export.

    • Fixed a screen and scrollbar rendering issue that could occur in some situations (e.g. when scrolled all the way right, measure showing partially on left) when applying a filter.

    • Fixed an exception that could occur when applying a filter on externally declared measures.

  • Tools, Database, and Services
    • Fixed some cases where lb-web handler exceptions were not properly logged.

    • Fixed a crash of lb-server that could sporadically occur when tracing was enabled.

    • Significantly improved performance of using TDX service to export a single default valued predicate to a file. Note that other cases involving TDX export of default valued predicates, for example joining more than one in a single export or filtering the export, will not benefit from this optimization.

    • Several linear recursion improvements:

      • Significantly improved performance of incremental maintenance for linear recursion rules that contain default valued predicates in the body when new key entities are created.

      • Corrected an internal server error that occurred with linear recursion rules that unnecessarily included extra entity atoms in their body.

      • Fixed "unknown key" internal errors for some linear recursion rules.

    • Fixed an internal server error caused by copying data between predicates that contained many duplicate strings.

  • Measure service
    • Fixed an issue that prevented tools that expected structured responses from the measure service from providing useful error messages in the event that a problem prevented the measure service from successfully initializing on startup.

    • Better error messages on empty responses and responses from a service that cannot be decoded.

    • Attributes defined by equality builtins will now be correctly considered to be functional. This may come up in user defined dimensions, but it is most important for working with the builtin primitive dimensions.

    • Revised the desugaring of composite spreads to only unwind along the dimensions where there is an actual spread. This should improve performance and avoid potential for some precision loss.

Known Issues

The issues listed below are known to exist in the 4.12.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.12 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
    • Modeler's application logo is now configured using a simple object. Before, to add an image as the application logo, you'd use the following configuration of the brandImg property:

      {
        workspace: project.workspace,
        ...
        brandImg: React.createElement("img", { alt: "LogicBlox", src: "/images/lb_logo.png" })
      

      Now, you don't have to create a React element anymore. You can now use the following configuration:

      {
        workspace: project.workspace,
        ...
        brandImg: { alt: "LogicBlox", src: "/images/lb_logo.png" }
      

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