LogicBlox 4.1.1

Release Date: May 1st 2014

What's New

Performance Improvements

  • LogicBlox 4.0.6 introduced domain parallelism to LB4. Domain parallelism, a mechanism for splitting data into pieces such that a query can be evaluated on each piece in parallel, allows LogicBlox to scale up its performance with the number of cores available in a single machine. Domain parallelism in past LogicBlox releases was restricted to queries -- both ad hoc and precompiled. In LogicBlox 4.1.1 the initial full evaluation of IDB rules is parallelized, too.
  • Applications with very large schemas will experience a significant reduction of the memory consumption when installing the schema.
  • Applications making use of the ratio and even spreading features will experience significant performance improvements.

Measure Service

  • The query_request field of the Request message has changed from being optional to being repeated. This allows for batching up multiple QueryRequests, each of which may request data at a different intersection, into a single Request.


    Please note that this change necessitated a breaking change to how the results are returned. Instead of the result columns being found in the Response message, they are found in the repeated report field.

  • The measure service now offers support for an empty expression. This is mostly useful when generating complex expressions. It can be convenient to emit an empty expression rather than complicating the generation code. The use of the empty expression will then be appropriately optimized away by the measure service.
  • It is now possible to ask for the value of an expression in the previous transaction. This is most useful when using the measure service’s spread-by-query functionality.


    Please be aware that this feature is still in beta mode and may change in the future.

Developer Tools

  • Config files for lb-web server and client have a section for global attributes. Previously, this section was defined by the initial part of the file, before any section is declared. A problem with this approach is that it is not possible to compose configuration files by concatenation since the global sections of a file would be included in the last section of the previous file.

    Now it is possible to declared a section named global that contains the global attributes. Config file concatenation is possible, and all global sections have their attributes merged.

    It is still possible to use the unnamed section for global, which maintains backward compatibility. However, it is not allowed to have a file with both an unnamed section and a section named global. That is, all concatenated files must declare a global section explicitly.

Corrected Issues

The issues listed below have been corrected since the 4.1.0 release.

  • Resolved an issue with plugin logic that prevented it from referencing predicates that are transaction lifetime.
  • Resolved an issue that prevented lb-web server and client from loading multiple config files with empty sections that have the same name.
  • Resolved an issue with loading a measure with the delimited file import service, that caused the import to fail when a line in the file ended with a double-quote and the delimiter.

Installation and Upgrade information

Installation Instructions

Installing LogicBlox 4.1.1 is as simple as 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.1.1/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

  • Previously, dialogues were implemented via installed delta logic. However, now that the measure service no longer installs delta logic, it was no longer possible to read from a dialogue metric at stage initial. The dialogue logic is now in an inactive block that is activated as needed. As such, dialogues no longer need a request predicate and the request_pred field has been removed from the Dialogue message. A new required field, block, has been added to provide the name of the inactive block to be activated when using the dialogue.
  • When sending a protocol buffer update expression, developers now need to supply the expected type of the input, if any.
  • Because it is now possible to make multiple query requests in a single measure service protobuf Request message, instead of report columns being contained directly in the Response message, the columns from each request are found the in repeated report field.

Deprecated Features

  • The report_name field of a QueryRequest is now unnecessary, as reporting predicates are no longer installed, and is not read by the measure service. It will be removed in an upcoming release.
  • Key requests are now syntactic sugar for adding specific expressions to a QueryRequest. As such, they are no longer necessary and will be removed in an upcoming release.

Release Information

Table 9. 

Server requirements
Operating System: 64 bit Linux
Java Runtime Environment 1.7, update 11 or higher
Python 2.7 or higher