Qorus Integration Engine®  4.0.3.p2_git
Qorus 3.0 Series

back to Release Notes

Qorus 3.0.4.p25

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qore

Issue ID Description
2953 fixed a bug where an unknown Content-Encoding header value received by HTTPClient would cause a crash

Qorus 3.0.4.p24

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qore

Issue ID Description
2549 module-ssh2: backported the 0-size file retrieval fix

Qorus 3.0.4.p23

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qore

Issue ID Description
2010 PgSqlUtil: permission denied for relation pg_authid bevause of change into pg_roles
1802 module-oracle: NTY (objects and collections) truncate LOB attributes (size/4)

Qorus 3.0.4.p22

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qorus

Issue ID Severity Description
1775 Normal network API calls made in the same HTTP session can fail due to bugs handling thread-local data
1772 Major crash in queueing workflow events caused by an error handling internal data in a race condition with blocking and unblocking the same order at the same time
1667 Normal qorus start broken with EXCESS-ARGS warning

Bug Fixes in Qore

Issue ID Description
1962 module-ssh2: crash in SSH2Client::ssh_connect_unlocked due to empty userauthlist
1729 socket SSL send operations can loop indefinitely when the remote closes the connection
1693 trunc_str() returns an invalid string if an invalid multi-byte character terminates the string at exactly
1327 trunc_str() never returns when a unicode char happens to be at the truncated length position

Qorus 3.0.4.p21

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qorus

Issue ID Severity Description
1599 Normal system.sqlutil: exec_sql and exec_raw_sql does return NOTHING in case simple DML statements
1556 Normal qrb fails to build module-gnu-java for 3.0.4
1543 Normal oload can still fail silently without setting an error code
1402 Urgent each HTTP request must be subject to authentication; authentication cannot be reused on the same socket
896 Normal UI: "read-only" user gets infinite HTTP authorize forms in the browser when he is looking into "System" tab

Bug Fixes in Qore

  • changed linking to the TIBCO libraries. Now we use Tibco Adapter SDK 5.8 Hotfix 006 and Tibco Rendezvous 8.4.5 Hotfix 002.
Issue ID Description
1326 module-xml: make_xml() is too strict for tag names, resulting in MAKE-XML-ERROR: tag: "_some_tag" is not a
1106 Qore's File class's internal C++ implementation uses select(2) with no bounds checking which causes crashes
1099 QoreProgram::parseCmdLineDefines() uses an API that performs a needless copy of a map

Qorus 3.0.4.p20

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qorus

Issue ID Severity Description
1402 Urgent each HTTP request must be subject to authentication; authentication cannot be reused on the same socket
  • mind that the fix of the issue 1402 was not proper in this patch, so re-fix is implemented in Qorus 3.0.4.p21.

Qorus 3.0.4.p19

Release Overview

This is a bugfix release; for details, see the issues addressed below.

Bug Fixes in Qorus

Issue ID Severity Description
1366 Normal Toolbar on order error page is overlapping info tooltip
1365 Normal Inproper sorting on order detail when clicking on Status header
1347 Normal Big amount of error instances per one WorkflowInstance = unable to open WI in WebUI
1331 Normal Diagram arraystep dropdown doesn't display correct detail when clicking on index
1330 Normal Diagram arraystep indexes dropdown is showing only dashes instead fo step index and status
1329 Normal When step is arraystep the invalid status is shown when one of indexes is in Error and rest complete

Bug Fixes in Qore

Issue ID Description
604 CsvUtil does not support the standard approach for escaping quotes

Qorus 3.0.4

Release Overview

This release is a bugfix release

Issues Fixed

Issues Fixed

Issue ID Severity Description Change
849 NORMAL oload fails with FAKE-API-ERROR in some cases fixed in oload
848 MAJOR When replacing the "groups" attribute of a role, the new group list is added to the existing list instead of replacing it due to an internal error fixed in Qorus

Qorus 3.0.3

Release Overview

This release is a bugfix release

New Features

  • system.sqlutil service was updated to raise an error immediately when a REST stream call attempts to access a non-existent table
  • error information is returned when synchronous workflows are executed and result in an ERROR status
  • new system options:
    • service-perf-events: allows service method call performance events to be emitted; by default they are disabled as of Qorus 3.0.3
    • workflow-step-perf-events: allows workflow step performance events to be emitted; by default they are disabled as of Qorus 3.0.3

Issues Fixed

Issues Fixed

Issue ID Severity Description Change
843 CRITICAL any Qorus workflow API calls requiring workflow order data or configuration fail when called in the detach function when all workflow order data objects are being purged due to a workflow shutdown fixed in Qorus
841 CRITICAL an incorrect column name is referenced when requeueing segments with a RETRY status causing an error fixed in Qorus
840 CRITICAL Qorus can crash when re-executing a prepared statement with bound objects after transparently reconnecting a failed Oracle connection in the first statement in a new transaction fixed in the oracle module
839 CRITICAL Qorus can crash if executing SQL using named types or collections when the oracle connection is closed due to memory management issues related to ocilib data fixed in the oracle module
838 NORMAL all user information is accessible to any user even without USER-CONTROL when RBAC is enabled through the REST API fixed in Qorus
1599 NORMAL system.sqlutil service exec_sql and exec_raw_sql does return NOTHING in case simple DML statements

Qorus 3.0.2

Release Overview

Qorus 3.0.2 brings many bugfixes as well as additional functionality to the Qorus platform, enhancing Qorus's features empowering operational teams and reducing Total Cost of Ownership by providing a higher level of interface automation, reliability, and operational transparency.

Important Upgrade and Backwards Compatibility Information

  • New Permissions for Filesystem Access from the new system.fs service
    superuser roles need to be updated with a new permission:
    • FILESYSTEM-CONTROL This can be done from the command-line with qrest (through the REST API) as follows:
      • qrest put roles/superuser?action=update\;perms=+FILESYSTEM-CONTROL
      Or offline with user-tool as follows:
      • user-tool -Usuperuser:perms=+FILESYSTEM-CONTROL

New Features

New Qorus features:

  • User API Updates
    • workflow, service, and job APIs are now found in dedicated namespaces to avoid future naming clashes as the APIs expand
    • workflow API functions have been renamed with a consistent naming convention and prefixed by "wf_" for consistency's sake and ease of identification
    • service API functions have been renamed with a consistent naming convention and prefixed by "svc_" for consistency's sake and ease of identification
    • job API functions already had a consistent naming convention and "job_" prefix
    • the old camel-case and non-prefixed function names in each API are still available for backwards compatibility and will remain available indefinitely
  • Automatic User Schema Management
  • DataStream Procotol Support
  • New sqlutil System Service
    • system.sqlutil service provides SqlUtil-based programmatic SQL operations and schema management from a new system service. Additionally streaming select, insert, update, delete, and upsert support is provided with DataStream-based REST streams added with new APIs.
    • each of the new service methods requires either DATASOURCE-CONTROL or SQLUTIL-READ or SQLUTIL-WRITE to call (similarly to access data streams provided by this service)
  • New fs System Service
  • Workflow Order Locking
    Workflow order instances can now be locked for use by a specific user; once locked user-initiated changes may only be made by that user until the lock is released or broken. New REST APIs for this are (each requires the note argument):
    • PUT /api/orders/workflowinstance_id?action=lock;note="note for action"
    • PUT /api/orders/workflowinstance_id?action=unlock;note="note for action"
    • PUT /api/orders/workflowinstance_id?action=breakLock;note="note for action"
  • New Order Instance Notes Solution
    Obsolete APIs getOrderInfo(), setOrderInfo(), omq.system.get-order-info(), omq.system.set-order-info() have been replaced by a new Order Instance Notes API and are supported by a new backend solution.
  • oload Updates
    • oload now uses user APIs with correct return and argument types for validation so that more errors can be reported at load time instead of at runtime
  • oview Updates
    • oview now accepts a colon after non-prefixed options that begin with a letter in order to avoid ambiguity with valid workflow names; such options given without a colon still work with this version of Qorus but cause a warning to be issued
    • oview now displays information about workflow order instance locks and notes if present
  • New Permissions
  • New Modules
  • New System Option
    • autostart-interfaces: allows disabling auto-starting of workflows, services, and jobs when Qorus is started
  • New Client Option
  • System Events Changes
    • performance information added to the following events:
    • new events added for workflow step and service method performance information and workflow order data locking events:
  • Web UI Updates
    • the web UI has been significantly updated for this release to support new functionality and enhance existing functionality
  • New Functions in the Common Workflow, Service, and Job API
  • New XML Parsing Class

Issues Fixed

Issues Fixed

Issue ID Severity Description Change
837 MAJOR HTTP communication may fail with valid responses due to case-sensitive comparisons with critical header values fixed in the qore library
836 NORMAL SqlUtil has a bug where select and row iterator operations could fail with certain select hash arguments without a "columns" entry but where column names were otherwise required fixed in the SqlUtil module
835 NORMAL WSDL module regression: SOAP operations with explicit message names are not supported fixed in the WSDL module
834 NORMAL Qorus cannot support WSDLs with multiple consecutive XSD import statements fixed in the WSDL module
833 NORMAL system service omqmap's jrmap contains group info indexed by id instead of name fixed in Qorus
832 NORMAL archiving ends in error when there is no value configured for 'batch-sleep' property fixed in Qorus
831 MINOR there is a descriptor leak in Qore::TermIOS::getWindowSize() fixed in the qore library
830 NORMAL errors can occur with SqlUtil with oracle DBs when the compat-string-numbers option is enabled fixed in the OracleSqlUtil module
829 MAJOR the onetimeinit function is called with the master workflow list write lock held in some cases when detach functions are run which can cause locking errors fixed in Qorus
828 NORMAL cannot delete a workflow with oload if a step has audit events or if the workflow has feedback events fixed in oload
827 MINOR a spurious WORKFLOW-NOT-RUNNING alert is raised when workflow autostart is changed to 0 because an out of date cached value is used for the autostart comparison fixed in Qorus
826 MAJOR workflow autostart decrements can fail to stop workflows if called in the same thread as the increment due to a error managing thread-local data fixed in Qorus
825 MINOR resetting datasources when only the omq datasource is defined causes the following error to be thrown: SYSTEM-DATASOURCE-ERROR: system datasource file "<path>" is empty; cannot start Qorus without the "omq" datasource fixed in Qorus
824 MAJOR a race condition in resetting user, datasource, and qorus remote connection monitoring can cause threads for old connections to still run after a reset fixed in Qorus
823 MAJOR there is a reference leak in Qore that leads to Program objects not being destroyed when a closure created in object scope is assigned to an object's member fixed in the qore library
822 MINOR there is a potential memory leak in the qore library if an HTTP message is received with an empty Content-Type header fixed in the qore library
821 NORMAL workflow log messages are written to the incorrect workflow log file after executing a synchronous subworkflow fixed in Qorus
820 NORMAL fixed a bug when parsing subnamespaces into a parent namespace where the subnamespace already exists (either in the committed list or in the pending list) fixed in the qore library
819 NORMAL Qore::Program::importClass() does not check the target namespace if the class to be imported is pending a parse commit; it only checks the committed list fixed in the qore library
818 NORMAL Qore::Program::importFunction() does not check the target namespace if the function to be imported is pending a parse commit; it only checks the committed list fixed in the qore library
817 MAJOR every time a workflow is loaded with oload workflow option values are lost fixed in oload
816 MAJOR workflow options set dynamically are not reflected in the same application session unless the omqmap service is reset fixed in Qorus
815 MAJOR workflows without a workflow options list when started with an option that was already used fail to start with a DB error fixed in Qorus
814 MAJOR the internal Service object is directly exposed to user code in request handler objects which is unsafe fixed in Qorus
813 NORMAL SOAP support has an error in the logic for detecting whether or not an element is required when the underlying type is optional fixed in the WSDL module
812 NORMAL SOAP messaging cannot support WSDLs with more than one port definition fixed in the WSDL module
811 NORMAL SOAP messaging cannot support WSDLs with document-style messages that have more than one top-level part fixed in the WSDL module
810 NORMAL valid SOAP fault responses returned with a 500 series HTTP error code should be parsed as SOAP fault responses so that errors are visible to users fixed in the WSDL module
809 NORMAL SOAP support has an error in the logic for detecting whether or not a complexType is required or not with deserialization of empty complexTypes and with complexTypes with all optional elements fixed in the WSDL module
808 NORMAL complexType extensions are not recognized as compatible types in type hierarchies in SOAP serialization and deserialization fixed in the WSDL module
807 MAJOR if a call reference to a private object method is created within the class, in some cases an object protection exception is raised when the call reference is called outside the class fixed in the qore library
806 MAJOR a call reference to an abstract object method returned from an abstract class cannot be executed even though it must have been instantiated by a concrete subclass fixed in the qore library
805 NORMAL a bug in SqlUtil using excessively verbose column aliases causes errors when automatically updating columns with existing rows and new default values and non-null contraints with PostgreSQL databases fixed in the SqlUtil module
804 MAJOR a crash can result when the qore library exits when user modules are destroyed because dependency order is not respected fixed in the qore library
803 NORMAL cannot override the Content-Type in the RestClient module fixed in the RestClient module
802 NORMAL Oracle NTY binding by placeholder ends with "BIND-EXCEPTION: type 'OracleCollection' is not supported for SQL binding by value and placeholder (eg IN OUT)" fixed in the oracle module
801 NORMAL RBAC modules do not participate in RBAC reload calls fixed in Qorus
800 NORMAL qore can crash on exit with certain openssl versions by calling ERR_remove_state(0) in the main thread's cleanup function fixed in the qore library
799 NORMAL calling createOrder() with an empty string ("") for the version fails in 3.0+ whereas it used to work with previous versions fixed in Qorus
798 MINOR a bug handling parse initialization of constant values requiring run-time evaluation after other parse exceptions have been raised can cause a parse-time crash fixed in the qore library
797 CRITICAL a bug in Condition::wait() timeout handling due to a 32-bit integer overflow error causes jobs with delay periods larger than appox. 26 days to run constantly and sometimes to exit with a fatal uncaught exception fixed in the qore library
796 MINOR the parse location can be reported incorrectly for type errors regarding in-object variable references in some situations fixed in the qore library
795 NORMAL WebApp fails with Qorus running as https fixed in Qorus
794 MAJOR text in SQL comments is not ignored by the oracle driver leading to errors related to unintended placeholders in the SQL string fixed in the oracle module
792 NORMAL spurious "USER-CONNECTION-UNUSABLE" transient alerts are raised with connections supplied by user modules when the system is started fixed in Qorus
791 NORMAL incorrect performance figures are reported in alert error message for the "SOCKET-THROUGHPUT-WARNING" transient alert; figures shown are 1000 times smaller than they should be fixed in Qorus
790 NORMAL there is a reference leak related to exception handling with invalid arguments with Qore::Socket::setWarningQueue() and Qore::HTTPClient::setWarningQueue() fixed in the qore library
789 MAJOR a qore switch statement with no case conditions and only a default label will erroneously never have it's default code executed fixed in the qore library
788 MAJOR alert information is not returned by the REST API for user connections supplied by user connection modules fixed in Qorus
787 MAJOR make-release does not recognize ".qconn" files as valid oload files fixed in make-release

Qorus 3.0.0

Release Overview

Qorus 3.0 is a major new release bringing many new features to Qorus designed to further empower operational teams and reduce Total Cost of Ownership by providing a higher level of interface automation, reliability, and operational transparency.

Important Upgrade and Backwards Compatibility Information

  • New Permissions for User and Service Connections
    superuser roles need to be updated with new permissions:
    • USER-CONNECTION-CONTROL
    • SERVER-CONNECTION-CONTROL
      This can be done from the command-line with qrest (through the REST API) as follows:
      • qrest put roles/superuser?action=update\;perms=+USER-CONNECTION-CONTROL,+SERVER-CONNECTION-CONTROL
      Or offline with user-tool as follows:
      • user-tool -Usuperuser:perms=+USER-CONNECTION-CONTROL,+SERVER-CONNECTION-CONTROL
      Note that user-tool has been updated to accept "delta" arguments; more information on this below
  • Modifying System Properties Requires Explicit RBAC Permissions
    to set, delete, or reload system properties, users now need either SERVER-CONTROL or one or more of: Previously all users with the LOGIN permission were able to manipulate system properties without restrictions
  • Use Workflow Autostart and Enable / Disable Interfaces Instead of Starting and Stopping Workflows
    instead of starting and stopping workflows manually, workflows' autostart value should be set to the number of instances that should be running, and workflows (or interface groups) should be disabled and enabled when the given interface objects should not be running. With this approach, the desired runtime configuration of the system is set and the system itself will start and stop interfaces depending on the status of their dependencies; enabling and disabling interfaces is used in place of stopping and starting workflows, for example.
  • Set manage-interfaces to False For Backwards-Compatibility
    Because datasource dependencies are automatically recognized even in legacy interface code and workflows are stopped when datasources are monitored to be down and only restarted when the datasource is back up if the workflow has a non-zero autostart value, setting qorus.manage-interfaces to false can help to ensure that workflows, services, and jobs maintain running and loaded despite datasource connection problems. This setting is only recommended for a temporary period for backwards-compatibility for instances where workflow autostart is not yet used.

New Features

New Qorus features:

Issues Fixed

Issues Fixed

Bug ID Severity Description Change
772 NORMAL there is a bug in the client library where system options taking hash values will only be set with one value even if multiple values are given
762 NORMAL when two or more services providing FTP server resources are running, the system throws an exception on shutdown
747 NORMAL the RestClient module does not set the Accept header correctly; indicates that only yaml encoding is accepted in responses
746 NORMAL the RestClient module does not set the character encoding correctly in the Content-Type header
745 CRITICAL it's possible to send invalid URLs with spaces and invalid percent encodings with the RestClient module (and therefore qrest, etc) because URLs are not encoded before sending
743 NORMAL datasource pool min and max sizes in the dbparams file are ignored for the omq (system) datasource
741 NORMAL the web UI shows the "Loading..." dialog indefinitely on the workflows page with an empty Qorus installation (ie with no workflows)
740 NORMAL ostart does not use sandboxing when trying to parse qore values on the command line
739 MINOR ostart parses command-line integer options as floating-point values
726 NORMAL There is no facility for determining if a DatasourcePool is incorrectly sized; no warnings are errors are raised in case datasource acquisition thresholds are exceeded
724 NORMAL Datasource::copy() does not set implicitly-set options in the new Datasource; therefore the child datasource may differ from the parent
722 CRITICAL implicitly opened connections in a DatasourcePool may not have the same time zone as the initial connection if the timezone is not set explicitly in the constructor
715 NORMAL job schedules are ignored by oload after the first load; they should only be ignored by oload if changed through the API
714 NORMAL no warning is raised by oload when a workflow with an older version number is loaded into the DB
703 NORMAL HTTP log not rotated with omq.system.rotate-log-files()
698 NORMAL system.remote.ping does not work correctly if there is no remote connection configured on the remote Qorus instance
683 NORMAL number("") is returned as @NaN@