Qorus Integration Engine®  4.0.3.p2_git
Qorus 1.8 Series

back to Release Notes

Qorus 1.8.0

Release Overview

This is a major new release of Qorus based on the Qore 0.7.3 library and adding much improved support for SOAP (client and server). RPM-based installation is supported for selected Linux platforms, automated MPKG installation of Universal binaries is supported on OS/X 10.4+. Qorus 1.8.0 documentation is included in OMQ_DIR/docs, including qore-0.7.3 documentation in $OMQ_DIR/docs/qore-0.7.3.

Please note that the system schema will be updated with this release to schema version 1.8.0; see System Schema 1.8.0 Data Model Changes later in this document for detailed information on this subject.

Issues Fixed in 1.8.0

This release contains a single bug fix against 1.7.2.p11:

Bug ID Severity Description
69 CRITICAL bug in gethostbyname_r() usage can cause a crash - GLIBC only

This release also contains all bug fixes included in the 1.7.2 series as follows:

Bug ID Severity Fixed In Description
68 CRITICAL 1.7.2.p9 bug in exception string in SmartMutex class implementation causes a core dump
66 BLOCKING 1.7.2.p9 services are not unloaded when main service thread stops
65 BLOCKING 1.7.2.p9 skipAsyncStep() causes a retry on array steps
63 MAJOR 1.7.2.p9 API function callNetworkAPI() throws an exception
62 BLOCKING 1.7.2.p8 new SegmentEventQueue implementation ignores system-default values for retry and async_retry delays
61 MAJOR 1.7.2.p7 asynchronous retry delay not set properly in internal workflow event queueing
60 BLOCKING 1.7.2.p6 out-of-order cleanup code causes errors in synchronous workflow execution
59 MAJOR 1.7.2.p6 Datasource class erroneously grabs the transaction lock under certain conditions
58 CRITICAL 1.7.2.p5 if the "rethrow" statement appears (illegally) outside a catch block a crash will occur
56 MAJOR 1.7.2.p4 namespace initialization in modules must only create class IDs once
55 BLOCKING 1.7.2.p3 xml parsing error with valid xml can cause a crash
54 CRITICAL 1.7.2.p3 memory error in parsing base64 data fixed
53 BLOCKING 1.7.2.p2 use of the "oracle_date" on mysql servers causes an error
52 BLOCKING 1.7.2.p1 memory error in converting a Boolean value to a string can cause crashes
51 MAJOR 1.7.2.p1 HTTPClient::head() throws a spurious exception on success
50 BLOCKING 1.7.2.p1 bug in DatasourcePool thread resource tracking causes a crash

New Features and Changes in This Release

  • No More License Files
    License key files are no longer necessary or supported
  • No More Schema Signature
    Qorus system schema signing is no longer necessary or supported
  • Enhanced Session Recovery
    Session recovery has been enhanced to try and contact the URL given for the open session before recovering the application session; if a response is received then the process will exit with an error and no recovery will be made
    As a consequence of the above, the qorus.auto-recover system option may now be safely set to true in the options file
  • Log file name templates
    Log file names are now set with the following new system options: qorus.logfile-template, qorus.svc-logfile-template, and qorus.wf-logfile-template. To maintain backwards compatibility, the default values of these variables are such that the old file names will be produced unless the template options are updated.
  • Improved Soap Support
    SOAP support has been vastly improved in this release, although it remains mostly undocumented. A SoapClient class is now available in all Qorus Program objects (for services and workflows). The source for this class can be found in the internal include file: $OMQ_DIR/qlib/intern/SoapClient.qc
  • Improved Support for Configurable Tablespace Names
    The oload and schema-tool commands now accept –data-ts=ARG and –index-ts=ARG arguments to allow tablespace names to be overridden when installing, upgrading, and managing schemas
  • Documentation Updates
    The Qorus documentation was updated and clarified, in particular, ambiguous references to "workflow instances" were clarified to be either "workflow order data instances" or "workflow execution instances"
  • Command-Line Tools Delivered in Script Form
    The ocmd, ostart, ostop, ostatus, oview, oload programs are no longer binary executables but rather delivered as Qore source programs/scripts to increase system transparency and provide examples of how to write Qorus client code in Qore (please note that as of this release these programs now rely on the $QORE_INCLUDE_DIR environment variable being correctly set to $OMQ_DIR/qlib to run)

System Schema 1.8.0 Data Model Changes

The data model has been updated to 1.8.0 with the following changes:

  • new indexes have been added and some unused indexes have been removed for performance reasons
  • a function index has been implemented on the WORKFLOW_INSTANCE table to quicker select workflows by day for Oracle and PostgreSQL; on MySQL a trigger has been implemented to populate a new column to provide the same effect
  • now workflow order data instances not being processed or cached by Qorus will now be marked with "status_sessionid = 0" instead of NULL so that these rows may be included in the indexes
  • The schema will be automatically updated as a part of the upgrade process. To do this, indexes are updated, and also the WORKFLOW_INSTANCE table will be updated; all rows where status_sessionid is NULL will be updated with "status_sessionid = 0";

Qore Programming Language New Features and Changes

The major new change for this release is the inclusion of the qore library v0.7.3 as updated from 0.6.2. The new Qore library provides the following features:

  • stable, documented API and ABI for the Qore library and for modules
  • major memory usage and performance improvements on all platforms
  • stability improvements with the elimination of possibility to deadlock in variable and object locking, no more nested locking is performed
  • support for closures and encapsulating the state of local variables in the closure
  • new operators, functions, and classes, including much-improved list handling support
  • memberNotification() support in objects
  • bzip2 compression support
  • support for SHA224, SHA256, SHA384, and SHA512 digest algorithms
  • XML improvements, including some XSD support
  • Support for thread-stack overrun detection on many common CPUs (x86, x86_64, sparc, pa-risc, itanium, ppc)
  • Performance improvements through atomic operations supported on sparc and itanium
  • Network event notification infrastructure
  • Non-blocking I/O and event notification support for the File class
  • Support for timeouts in the Socket::connect*() methods

RPM Packaging Changes

RPM packages as of version 1.8.0 are packaged so that Qorus is integrated into the Linux filesystem according to the LSB (Linux Standards Base) specification. Previous RPM installations placed the application and all supporting files in an application directory in /opt/qorus.

The new locations are:

Path Description
/etc/qorus application configuration files (options and dbparams)
/etc/sysconfig/qorus application initscript configuration file
/usr/bin executables (binaries and scripts)
/usr/lib or /usr/lib64 shared libraries and modules
/opt/qorus application configuration files
/usr/share/doc/packages/qorus (*SUSE) or /usr/share/doc/qorus-(redhat, Fedora) application documentation
/var/opt/qorus all other application files

Changes and Compatibility Warnings

This version of Qorus should not pose any user-code compatibility issues with recent Qorus versions (particularly not with v1.7.2).

Upgrade Notes

Because of the schema upgrade, this is an offline upgrade. Qorus must be shut down before the upgrade is installed.