LogicBlox 4.34


Table of Contents

LogicBlox 4.34.0

LogicBlox 4.34.0

Release Date: May 12, 2021

What's New

LogicBlox 4.34.0 introduces the following enhancements:

  • Tools, Database, and Services
    • Added a new lb update-archive command that can be used to update a workspace archive produced from an older LogicBlox release, making changes that are necessary to restore the archive into a newer LogicBlox release. Currently, this command will update the syntax of the predict P2P function for archive versions made prior to 4.33. Additional updates will be added to the update-archive command whenever required by changes to the LogicBlox runtime.

    • The runtime will now avoid unnecessary rule maintenance for list P2P rules during the clean stage, which can in turn trigger unnecessary rule maintenance on dependent rules.

    • A new binary data format, called BloxFrame, has been introduced in this release. BloxFrame can be used for more compact data exchange between client applications and the LogicBlox server. In most cases, as long as the query response is large enough to offset the compression headers, this will produce much smaller responses than data encoded using ConnectBlox Column messages. To retrieve data in BloxFrame format, set the boolean frame field of the QueryPredicate message. The corresponding Relation message in the response will store the data in the frame field instead of as Column messages.

      The ConnectBlox protocol has been extended to support streaming BloxFrame data back to the client. This is useful in reducing latency as the client will start to receive chunks of BloxFrame data as soon as it becomes available, rather than having to wait for the server to batch it all up into a single ConnectBlox Response message. BloxFrame streaming can be enabled by setting the stream_id field in the QueryPredicate message. The data will be directly streamed back to the client in messages with that id. The messages will contain pure BloxFrame data with no ConnectBlox envelope. The Java ConnectBloxSession class in the LogicBlox Java libraries has been updated with a createExportStream method to simplify the use of this feature.

      The lb-bloxframe.jar provides a pure Java decoder for BloxFrame that can either convert to standard ConnectBlox Column output or provide access to the data through an iterator based API. The BloxFrame.h header, along with the libBloxFrame.so shared library provided with the LogicBlox distribution, describes C bindings for a iterator interface using a streaming decoder. This interface allows you to start iterating over the BloxFrame data without having received all of it yet. The BloxFrame.js file contains a JavaScript version of this streaming API, cross-compiled via emscripten, that can be used to decode BloxFrame data in browser clients and other JavaScript environments.

Corrected Issues

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

  • Modeler
    • Resolved an issue that caused an export to CSV/Excel to fail when there was no title configured for the sheet view.

  • Modeler IDE
    • Fixed styling for the hierarchies in the "Dimensions" view of the Modeler IDE.

    • Resolved an issue that caused warmups to fail when building a Modeler IDE project. Warmups now work as expected when building from the Modeler IDE with warmup enabled.

  • Tools, Database, and Services
    • Fixed the --verbose option for the lb restore command so that the verbose log is printed even if an unexpected error occurs during execution of the restore operation.

    • Made the algorithm of incremental maintenance more cautious when applying an optimization step for default-valued predicate atoms whereby the changes to the underlying default-valued predicate can alternatively be obtained from its materialized layer. This optimization step presumes that the materialized layer appears in an atom having the same keys with the default-valued predicate atom and occurring in certain positions in the rule relative to the position of the default-valued predicate atom. Making the application of this optimization step ignorant of these preconditions can lead to an incorrect evaluation procedure. This problem was exposed as a functional dependency violation during workbook refresh operations, but could happen in more general cases.

    • Corrected an issue related to maintenance of recursive logic that could intermittently cause an internal lb-server error.

Known Issues

The issues listed below are known to exist in the 4.34.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.

  • Notice for macOS 10.15 Catalina users
    • LogicBlox builds are not signed with an Apple developer certificate. This may result in error messages stating that LogicBlox originates from an "unidentified developer". To ensure the LogicBlox services will run on your system, apply the following command on the distribution tarball you downloaded from this website:

      $ xattr -d com.apple.quarantine logicblox-osx-<VERSION>.tar.gz

      Additionally, LogicBlox services will not function correctly when using a signed/notarized Java Runtime Environment. For instance, AdoptOpenJDK version 11.0.6 is the latest version that works with LogicBlox without causing signing issues.

      For more information about running apps from an unidentified developer, see Apple's macOS User Guide.

Installation Information

Install LogicBlox 4.34.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 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.34.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 11
    • 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.