InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2009.1.5 and 2009.1.6 for Caché and Ensemble.
The release notes are available in the \Docs subdirectory of your installation.

Late-breaking information about this kit can be found in: \relnotes\readme.1st

Topics in this document include:


General Announcements
Upgrading From Prior Released Versions
Customers running on any prior released version of Caché may upgrade to this version of Caché during installation. When upgrading across multiple versions, intermediate upgrade steps may be necessary depending on the inter-release compatibility requirements. The release notes for the intervening releases will contain that information.

After each upgrade step, the following conditions apply:

Upgrading ECP Configurations
The following guidelines apply to the process of upgrading ECP configurations:
If your database or application servers hold local transaction information until the transactions are completed, or if you have questions or concerns about how to upgrade your ECP configuration, please contact InterSystems Worldwide Customer Support.

Restricted Rights Legend
Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in Technical Data and Computer Software clause at DFARS 252.227-7013.
InterSystems Corporation
One Memorial Drive
Cambridge, MA 02142
When acquired by the Government, commercial computer software and related documentation bearing this legend are subject to the following:

  1. Title to and ownership of the software and documentation shall remain with the Contractor.
  2. Use of the software and documentation shall be limited to the facility for which it is acquired.
  3. The Government shall not provide or otherwise make available the software or documentation, or any portion thereof, in any form, to any third party without the prior written approval of the Contractor. Third parties do not include prime contractors, subcontractors and agents of the Government who have the Government's permission to use the licensed software and documentation at the facility, and who have agreed to use the licensed software and documentation only in accordance with these restrictions. This provision does not limit the right of the Government to use software, documentation, or information therein, which the Government has or may obtain without restrictions.
  4. The Government shall have the right to use the computer software and documentation with the computer for which it is acquired at any other facility to which that computer may be transferred; to use the computer software and documentation with a backup computer when the primary computer is inoperative; to copy computer programs for safekeeping (archives) or backup purposes; and to modify the software and documentation or combine it with other software. Provided that the unmodified portions shall remain subject to these restrictions.
END OF LEGEND

InterSystems News, Alerts and Advisories
From time to time, InterSystems publishes items of immediate importance to users of our software. These include alerts, mission critical issues, important updates, fixes, and release announcements.

The most current list can be obtained from the InterSystems Website.

Users should check this list periodically to obtain the latest information on issues that may have an effect on the operation of their site.


Online Documentation
As a convenience to our users, InterSystems provides online access to documentation for recent product versions at the InterSystems Website. From the home page, choose the Support & Education tab, then choose the Support menu item for the product you are interested in, for example, Caché Support. Links to the available documentation can be found on the support page for each product.

Description of a Change Report
To help you assess the impact of this maintenance kit on your applications, the remaining topics in this document describe each modification in detail.
If you need assistance evaluating the effect on your application(s), system(s), or related plans, please contact the InterSystems Worldwide Support Center:

  • Phone:  +1  617  621-0700
  • Fax:  +1  617  734-9391
  • Email:  support@intersystems.com


Category: CSP.Gateway
Platforms: All
DevKey: CMT776
Summary: Ensure that the values assigned to configuration parameters in CSP.ini are always expressed in English (7-bit ASCII range)

Description:

This change will ensure that the values assigned to configuration parameters in CSP.ini are always expressed in English (7-bit ASCII range). It has always been the convention that text held in the Gateway configuration file should be in English, even though the corresponding text in the Management forms may be localized in some other language.

Category: CSP.Gateway
Platforms: All
DevKey: CMT804
Summary: Fix a problem that could lead to the Gateway Management form for Application Access not displaying properly

Description:

This change fixes a problem that could lead to the Gateway Management form for Application Access not displaying properly. This was caused by a local buffer overrun in the part of the form that deals with the 'Response Size Notification' parameter.

Category: CSP.Gateway
Platforms: All
DevKey: CMT820
Summary: Automatically correct the session status information in the Gateway connection table where state changes are made in the form footers and, as a result, are not projected through to the form content

Description:

This change corrects the session status information in the Gateway connection table where state-changes are made in the form footers and, as a result, are not projected through to the form content. This problem only affects applications that are configured to not use cookies to project the session token.

Category: CSP.Gateway
Platforms: All
DevKey: CMT833
Summary: Fix a mis-routing issue with state-aware applications

Description:

This change corrects a mis-routing issue with state-aware applications where the Gateway and the Caché service processing a request could get out of agreement on whether a session was state-aware and trigger a security violation.

Category: CSP.Gateway
Platforms: All
DevKey: CMT839
Summary: Protect against a potential memory violation in the function responsible for reading data block headers from Caché

Description:

This modification will protect against a potential memory violation in the function responsible for reading data block headers from Caché. The error happens as a result of the Gateway caretaker daemon responding to (perhaps transient) connectivity issues to a previously operational Caché instance.

Category: CSP.Gateway
Platforms: All
DevKey: CMT845
Summary: Ensure that CSP pages cached in the Gateway can be served as the first page in an application

Description:

In previous versions, all session tokens (either as cookies or as form/URL variables) embedded in cached pages would be replaced with the current session token for the user. This presents a problem for cases where the very first form in the application is returned from the cache. In this case there is no incoming session token to replace the original value held in the cached version of the page.

This change now correctly handles that situation.


Category: Ensemble
Platforms: All
DevKey: HCR127
Summary: Allow compilation of Rules that reference uncompiled functions (fix in-place upgrade of Ensemble Rules)

Description:

This change only affects users who have user-defined functions in their Rules. In this case, such Rules would not be properly recompiled during an in-place upgrade; in an upgraded system, "Unknown Function" errors would be seen in all Rules that made use of custom functions.

Compilation of Rules will succeed even if the classes containing utility functions are in an uncompiled state. However, if the user opens the Rule in the editor, the function will be highlighted in red as an error, with the hint "Function 'name' does not exist or is not compiled". If the Rule is evaluated, it will throw a runtime error when trying to evaluate the function.

This change modifies the way that the functions are retrieved at compile time, fixing this problem.


Category: Ensemble.RulesEngine
Platforms: All
DevKey: HCR138
Summary: Check for duplicate function names in Ensemble

Description:

Since Rules were introduced in Ensemble, they may extend the built-in set of functions, creating their own user-defined custom functions.

However, there was never a check or warning about duplicate function names existing in more than one class. The current behavior is to silently ignore the duplicates and select the first definition found.

Starting with this change, Ensemble will now report such errors during upgrades in file ensinstall.log, and offer a method that users can invoke to check for such duplicates so they can resolve these conflicts:

Write $system.OBJ.DisplayError(##class(Ens.Rule.Utils).GetAllFunctions(.func))
After an upgrade, users should now check the file ensinstall.log, under subdirectory mgr, and ensure that the rules upgrade went without error.

Category: Global Module
Platforms: All
DevKey: SAP1322
Summary: GCOMPACT results in database corruption in presence of <FILEFULL> errors

Description:

This change corrects a situation where if GCOMPACT was run on a database while it was experiencing <FILEFULL> errors, the resulting database had a corrupted pointer block with loss of data.

Category: Languages.COS
Platforms: All
DevKey: CDS1702
Summary: Fix two-argument $DATA and 3-argument $ORDER/$QUERY in indirection

Description:

A problem has been fixed that could lead to an invalid name in the global directory in the specific case of using indirection for the global name with the same local variable which is also set in a subscript expression using $DATA, $ORDER, or $QUERY. For example,
SET ^X(3)=4, n="^MyGlobal", @n@($DATA(^X(3),n))="data"

Category: SQL.Query Processing
Platforms: All
DevKey: JLF330
Summary: Fixed disablement of UNIONOROPT when collection fields are referenced

Description:

The UNION/OR optimization requires certain "cloning" operations to be performed on the internal representation of a SQL query that are not available when using collection predicates. In this case, the UNION/OR opt is disabled for a query block when collection fields are referenced within that query block. The function that checked for this condition had an error that has now been fixed.

Category: System
Platforms: All
DevKey: GK839
Summary: Fixed the current rtn namespace tracking issue

Description:

A routine invocation allocated and left the frame stack uninitialized, and if there was an error which required cleanup during the current namespace search, the result was unpredictable.

This has been corrected.


Category: System
Platforms: All
DevKey: SAP1312
Summary: MONITOR fails to email on journal failure and FreezeOnError=1

Description:

If system fails on journal error and FreezeOnError is set, MONITOR does not report the error via email.

This change fixes that omission.


Category: System
Platforms: All
DevKey: SML1175
Summary: Clean up dead job's resource before clean up stuffs

Description:

This change fixes a situation where the clean daemon might fail to clean up a dead job if its resource is used by the clean daemon itself.

Category: System.Backup/Restore
Platforms: All
DevKey: STC1793
Summary: Increase MaxServerConn if JoinCluster=1

Description:

In versions previous to 2009.1, when the parameter JoinCluster was set to 1 in the CPF file, Caché would increase the parameter MaxServerConn to 14 so other cluster members would be able to connect. This change restores that behavior that had been removed in 2009.1.

Category: System.Backup/Restore
Platforms: All
DevKey: STC1800
Summary: Fix locking of CSP pages in studio

Description:

An error has been corrected where a lock was not taken out while editing a CSP page. Thus, if two people were editing the same page, then when one user changed it, the other user would immediately be presented with a message:
'***.csp' has changed, would you like to reload it?
This no longer will happen, the second user will now be notified that someone else is editing it and that it can only be opened as read-only.

Category: System.Journaling
Platforms: All
DevKey: HYY1555
Summary: Fix a case of incorrect wij journal info

Description:

This change addresses an issue that could cause, among other problems, journal recovery to fail at Caché startup. In general, the more frequently that journal files were switched, the more likely the problem was to occur.

Category: System.Licensing
Platforms: All
DevKey: RJW1819
Summary: License units for CSP sessions may not be released after timeout+grace period

Description:

The following problem is corrected: expired CSP sessions may remain in the license "grace period" longer than the expected 5 minutes under some rare circumstances. This occurs only for Single Server license keys if the interval between the expiration of a single page CSP session and the next license login exceeds 17 minutes.

Category: System.Monitoring
Platforms: All
DevKey: RFD508
Summary: Better handling of stats unmapping for dead jobs

Description:

This change corrects a situation where the dead job cleaner was not checking for a job still connected to the shared memory block used to collect statistics resulting in a possible later <ACCVIO>.

Category: System.Shadowing
Platforms: All
DevKey: STC1796
Summary: Add [Shadows] section to the CPF file

Description:

There is a new section in the CPF file, [Shadows], that controls whether individual shadow servers should be started. The format of entries is:
ShadowName=value
where value can be 0 or 1, corresponding respectively to stop and start.

Category: Zen
Platforms: All
DevKey: DAD013
Summary: Corrects a bug where zenThreadId values were based on server $JOB values instead of logical threads

Description:

This change corrects a design shortcoming where zenThreadId values were based on server $JOB values instead of logical threads. When using Zen object synchronization in a multi-threaded asynchronous environment, if two independent events cause conflicting DOM updates, then the user may be presented with an inconsistent user interface.

This will no longer happen.