InterSystems Documentation 
Caché Maintenance Kit Release Notes


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

Release notes from prior kits are combined in the file: \relnotes\cache\prenotes.htm

This document provides a list of the changes between Caché 2008.1.1 and Caché 2008.1.2.

Topics 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 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 evaulating the effect on your application(s), system(s), or related plans, please contact the InterSystems Worldwide Support Center:


Change Reports for This Maintenance Kit

Category: CSP
Platforms: All
DevKey: MAK2346
Summary: Restore journal state after each CSP page

Description:

If a CSP page disabled journalling with a call to DISABLE^%SYS.NOJRN, then the CSP server was not resetting this; hence, the next CSP page served by this same process would be running with journalling disabled. Now, the journal state is noted and restored after each CSP page.

Category: CSP
Platforms: All
DevKey: MAK2374
Summary: Restore check inside CSP link rewriting if the link is a javascript link

Description:

When you call ..Link(url) from a CSP application, it rewrites the url to add things such as the sessionId, if it is required. The code also checks for 'javascript:' at the start of the link and skips rewriting these because they are not real links but commands to execute some javascript code. The code to avoid doing this was erroneously removed by preceding development activity and this change restores it.

Category: Installation.Windows
Platforms: Windows
DevKey: ALE1460
Summary: Read and execute cbootuser.rsa on Windows Vista and above

Description:

Windows installation on Vista and above will read and execute cbootuser.rsa the same way it does on XP. This allows for an uninterrupted installation process.

Category: Networking.ECP
Platforms: All
DevKey: GK632
Summary: Fixed gref translation when the remote DB collation is different

Description:

Implied grefs (global references) across ECP, or mapped globals across ECP, or the first reference to any global across ECP did not translate the gref to the remote collation consistently. This has been corrected.

Category: Networking.ECP
Platforms: All
DevKey: GK652
Summary: ECP hang on ECP server recovery during long string set

Description:

In very rare conditions, ECP recovery may hang if there is an ECP server or network outage during a long string (i.e. > 32K characters) SET.

Category: Networking.ECP
Platforms: All
DevKey: GK653
Summary: Fixed a cstat access violation

Description:

This corrects a rare situation where an ECP reply buffer may reference a a null pidtab entry.

Category: Networking.ECP
Platforms: All
DevKey: GK654
Summary: Adjusted the ECP client heartbeat interval

Description:

This change adjusts the ECP application server heartbeat interval to detect an idle system network outage more accurately. A large number of async packets originated by the database server may prevent it from sending heartbeats. Decreased the app-server heartbeat interval to keep the db-server pending heartbeat count more accurate.

Category: Networking.ECP
Platforms: All
DevKey: GK656
Summary: Fixed the ECP requests number to wrap consistently.

Description:

When the request number counter overflowed, the ECP client wrapped the request numbers to one but the server wrapped it to zero. Unexpected wrapping could cause a console log entry, drop the connection, and reconnect and recover immediately. It is an issue at sites where ECP recovery is disabled and has been fixed to be consistent in client and server.

Category: Networking.ECP
Platforms: All
DevKey: GK659
Summary: ECP client recovery to update remote DB sfn.

Description:

In a very rare condition during the ECP server recovery window, if the database server failed and if the remote databases were not mounted in the same order as at startup, then ECP synchronous requests (that is, $DATA, $GET, $INCREMENT) that were being formulated at the time of the database server failure might have referred to the incorrect database number. This has been corrected.

Consequences of an incorrect database number vary (in part depending on the Caché release): the ECP daemon may crash or the request may not be directed to the correct database. In the latter case, unexpected application errors may result or (in rarer cases) incorrect data may be fetched.

Category: Networking.ECP
Platforms: All
DevKey: TR995
Summary: Long string set across ECP may leave the ECP client cache out of date

Description:

Prior to this fix, if a string in excess of approximately 64KB were modified by the application server while the block which will contain the string was being sent to the same client as a consequence of an earlier request, the app server and database server would end up with different versions of that block.

Category: Object.Class Compiler
Platforms: All
DevKey: MAK2391
Summary: Fix typo in %occConvert

Description:

%occConvert could get an UNDEFINED error when upgrading a class dictionary version in a database. This has been corrected.

Category: Object.Macro Preprocessor
Platforms: All
DevKey: DPV3110
Summary: MPP: Fix infinite loop when there is expansion of recursive macros

Description:

A problem in the macro preprocessor has been corrected where the compiler would go into an infinite loop if expansion of a macro reference was a recursive loop. The following are examples of such recursion:
#define ABC $$$ABC
$$$ABC
or
#define ABC $$$DEF
#define DEF $$$ABC
set j=$$$ABC
If you attempt to compile such code, you will now get an error such as:
ERROR: MyRoutine.MAC(14) : MPP5649 : Too many (65535) macros referenced on this line.
This might indicate recursion in the macro definitions.

Category: Object.XML
Platforms: All
DevKey: JN675
Summary: Fix incorrect string length calculation in %XML.SAX.Utils.Sequencer

Description:

Fix incorrect string length calculation in %XML.SAX.Utils.Sequencer.

Category: Security
Platforms: OpenVMS
DevKey: RJW1569
Summary: Fix problem accepting Kerberos connection on OpenVMS

Description:

This changes corrects a problem that prevented Caché Unicode system from accepting a Kerberos connection on OpenVMS platforms.

Category: Security
Platforms: All
DevKey: SML1045
Summary: Fix a security hole in $Incr() for cluster nodes.

Description:

This change closes a security hole in the $INCREMENT() and $BIT() functions. When a clustered database is configured to be read-only for a user, it gets <PROTECT> error when a SET or KILL is attempted on the database. However, $INCREMENT did not trigger the error, though it should have, and the increment occurred in the database. This only happened on the cluster slave node side.

Category: Security
Platforms: All
DevKey: STC1423
Summary: $SYSTEM.Security.AddRoles() cannot be called after unhandled error

Description:

$SYSTEM.Security.AddRoles has been updated so that you can no longer Call $SYSTEM.Security.AddRoles() from the debug prompt and escalate your roles outside of the scope of the application.

It is recommended that any routine or class use error handling in the procedures which call $system.Security.AddRoles().


Category: Security
Platforms: All
DevKey: STC1430
Summary: $SYSTEM.Security.AddRoles() can be called from User defined "Z" functions

Description:

This change also allows $SYSTEM.Security.AddRoles() to be called from user defined "Z" functions. These functions are user defined extensions to the COS language which allow commands, functions, and special variables starting with "Z" to be added to the language.

Category: System
Platforms: All
DevKey: CDS1385
Summary: Fix <UNDEFINED> in DisableJournaling method

Description:

Trying to run the DisableJournaling method of the SYS.Database class would result in an <UNDEFINED> error. This has been corrected.

Category: System
Platforms: All
DevKey: CDS1395
Summary: Long strings were not correctly returned from $SYSTEM functions

Description:

This change corrects an issue where a function such as $SYSTEM.Encryption.Base64Decode, when it returned a long string, could cause a memory access violation.

Category: System
Platforms: All
DevKey: CDS1396
Summary: Prevent buffer overrun with encryption functions

Description:

When the output of Base64Decode was longer than 32K characters, the length of an internal buffer was sometimes erroneously calculated leading to a potential buffer overrun.

Category: System
Platforms: All
DevKey: CDS1408
Summary: Fix access violation after <STORE> error

Description:

In some situations when running an error trap after a <STORE> error, the trap routine was not loaded correctly, resulting in a memory access violation. This has been corrected.

Category: System
Platforms: All
DevKey: CDS1409
Summary: Fix loop or access violation after exclusive NEW when partition is full

Description:

When there is a small amount of memory available in the partition, and an exclusive NEW command is issued, there is a possibility for the memory queue to become corrupt. This resulted in a cpu loop or an access violation at some later point. This vulnerability has been corrected.

Category: System
Platforms: All
DevKey: JO2231
Summary: Corrections in x64 AL code to retrieve top argstack entry after COM2

Description:

This change corrects a source of occasional crashes by Caché by fixing deviations from the stack discipline.

Category: System
Platforms: Windows
DevKey: JO2233
Summary: Disable LTCG for 64-bit Windows x86 builds

Description:

A problem has been resolved on 64-bit Windows machines where loading a large number of XML files sometimes caused an exception resulting in the closure of the terminal window.

Category: System
Platforms: All
DevKey: JO2234
Summary: Correct access violation due to calling object Destruct methods as part of popping the execution stack

Description:

In certain situations QUIT, ZQUIT and HALT commands could get exceptions triggered when Caché attempted to clean up objects which go out of scope as part of "popping" the internal execution stack. This is now fixed.

Category: System
Platforms: OpenVMS
DevKey: SML1036
Summary: On OpenVMS, fix a loop condition when a job is terminated abnormally while writing to principal device

Description:

On OpenVMS, this change fixes a looping conditionthat could occur when a job was terminated abnormally while writing to principal device.

Category: System.Licensing
Platforms: All
DevKey: RJW1576
Summary: License server can enter infinite loop and write enormous license report file.

Description:

Under some rare circumstances, license server could create a circular linked list of licenses. When this happened, the license server would loop attempting to process the list, or it would attempt to write an infinitely large license report file.

This change mitigates these problems from occurring by counting the elements processed and causing the license server to exit if the number exceeds the maximum possible number of structures. The license server will be restarted automatically if this should occur. User login and logout proceed without interruption during this period.

The license server restart will rebuild the list properly.


Category: System.NWDS
Platforms: All
DevKey: SML1037
Summary: Fix configuration re-activation took a long time in NWDS master

Description:

When NWDS is configured, the configuration re-activation could take a long time at master node and caused the SMP to timed out. This has been addressed.

Category: Utilities
Platforms: All
DevKey: STC1301
Summary: Improve performance of ZN command

Description:

Previously, the ZN command executed an excessive number of ObjectScript lines while switching namespaces. This could cause a severe performance penalty to applications which used the ZN command to switch namespaces within the application. This has been fixed.

Category: Utilities
Platforms: All
DevKey: STC1377
Summary: Fix password validate error on user import, Delete users faster

Description:

If there was an attempt to import a user into a new instance of Caché from another using ^SECURITY, and the user existed on both instances, and had a different password on each instance, then the password on the new instance would fail validation. Now, the user is deleted from the new system before the record is imported. This has the added effect of removing all the SQL table privileges for the new user (previously the user on the new instance inherited the table privileges from the user on the other instance).

There have also been performance enhancements.

Category: Utilities
Platforms: All
DevKey: STC1407
Summary: ZN command now works if in implied namespace with no mappings

Description:

Previously, if a process executed a $ZU(5,namespace) command to an implied namespace, the routine to test for the protect error was unavailable, so ZN could not be used to get back — though $ZU(5,namespace) could be used. The fix is to explicitly call the check routine with a namespace reference so it can be executed.