InterSystems Documentation 
Caché and Ensemble 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 files: \relnotes\cache\relnotes.htm and \relnotes\ensemble\relnotes.htm

This document provides a list of the changes between versions 2008.2.1 and 2008.2.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 evaluating 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.Gateway
Platforms: All 64-bit
DevKey: CMT686
Summary: Workaround a new problem with the IIS V7 Native Module Interface that prevented chunked CSP responses displaying correctly

Description:

This change avoids problem with the IIS V7 Native Module Interface that prevented chunked CSP responses displaying correctly (that is, responses sent using HTTP chunked transfer).

This correction only applies to x64 platforms.

Also, this build strengthens the code that checks for systems management forms: if the PATH_TRANSLATED field for the request is empty then the Gateway will use the value of SCRIPT_NAME instead to determine the extension of the requested file.


Category: CSP.Gateway
Platforms: All
DevKey: CMT687
Summary: Fix a problem in the code responsible for sizing the buffer requirements for configurations containing huge numbers of server and application path definitions

Description:

This change corrects a problem in the code responsible for sizing the buffer requirements for configurations containing huge numbers of server and application path definitions. The issue could potentially result in UNIX and OpenVMS based Gateway installations not loading all the configurations listed in the CSP.ini file at start-up time. This, in turn, would result in applications not being able to access the resources that had failed to load (for example, access to particular Caché servers).

Category: CSP.Gateway
Platforms: Windows
DevKey: CMT693
Summary: Resolve a security problem that prevented the use of Shared Memory under Windows 2003 (and later)

Description:

This change resolves a security problem that prevented the use of Shared Memory under Windows 2003 (and later).

The availability of shared memory is not critical to the Gateway and CSP can function normally without it. Shared memory is currently used as means for communicating between the Systems Management and Run-time module. For example, it is used to cache the security tokens used to protect access to the Gateway management forms for configurations where the administrator chooses to password-protect them. As a result, one visible consequence of an inability to access shared memory is the need to repeatedly log in to the Gateway management forms.

The Gateway, on failing to secure shared memory under Windows writes the following message to the Event Log:

cspSHMinit : Startup error 
Unable to create a handle to a shared memory block - code: 5 - Access is denied.

Category: CSP.Gateway
Platforms: All
DevKey: CMT698
Summary: Resolve a race condition caused by multiple frames accessing the Gateway data block responsible for registering state-transitions (preserve mode changes) against incoming session IDs

Description:

This change resolves a race condition caused by multiple frames accessing the Gateway data block responsible for registering state-transitions (preserve mode changes) against incoming sessions IDs.

Category: CSP.Gateway
Platforms: All
DevKey: CMT702
Summary: Redesign the functionality responsible for managing the transmission (and caching of) response data between the Cache/CSP engine and the hosting web server

Description:

The functionality responsible for managing the transmission (and caching of) response data between the Cache/CSP engine and the hosting web server has been redesigned in order to resolve occasional memory management issues when GZIP compression is used.

The new design greatly simplifies (without introducing any extra overhead) the management of memory and the relationship between the response streams and the Gateway cache. It also simplifies the processing of response data that must be locally cached for the purpose of generating a content length field for the HTTP headers.


Category: CSP.Gateway
Platforms: All
DevKey: CMT714
Summary: Ensure that the Apache API module (mod_csp) dispatches the HTTP response headers to the client in cases where no content follows

Description:

A fault in the Apache API module which could occasionally result in a failure to dispatch HTTP response headers for which there was no following content has been corrected. This fault could affect HTTP redirect headers. A failure to dispatch the headers under these circumstances would typically occur when KeepAlive connectivity was in use.

Category: CSP.Gateway
Platforms: All
DevKey: CMT716
Summary: Fix a problem that resulted in wildcard requests (*) for all CGI environment variables not being honoured (CSPnsd only)

Description:

This change corrects an issue that resulted in wildcard requests (*) for all CGI environment variables (as specified in the Gateway configuration) not being honoured by the CSPnsd module.

Category: Ensemble
Platforms: All
DevKey: MC826
Summary: Do not set multiple alarms for ScheduleHandler

Description:

This change corrects a situation where updating a production could cause extra, duplicate alarms to be set in the scheduler for the production. Actively modified productions could accumulate many, many such alarms.

Category: Ensemble
Platforms: All
DevKey: MC827
Summary: ParseScheduleSpec() to normalize values in ScheduleSpec

Description:

ScheduleSpec is to be specified in $ZDATETIME($H, 3) format; it can include wildcards ("*") for all fields and "WEEK" for year value.

ParseScheduleSpec looks at all the ScheduleSpec values, resolves the wildcards and returns the next closest event in absolute time. In ParseScheduleSpec, there is code that parses the ScheduleSpec looking for the special values and copies the non-special values to the output which is in $ZDATETIME format.

However, when the values in ScheduleSpec are malformed, it could cause the $ZDATETIME to be malformed. For example, "2008-11-04T*:00:00S" is such a value with an extra "S" at the end. This would yield a malformed $ZDATETIME value "2008-11-04T19:00:00S".

This change forces a normalization to numeric value of each field when constructing the output $ZDATETIME.


Category: Ensemble
Platforms: All
DevKey: MC858
Summary: ParseScheduleSpec() to normalize values of week-count

Description:

Before this change, the week-count value was not normalized. Now it is.

Category: Ensemble
Platforms: All
DevKey: MC863
Summary: Fix bug that causes race condition in MarkJobDead

Description:

There was a circumstance where the attempt to identify dead jobs created ghost job nodes with increasingly long names that eventually led to generating a <SUBSCRIPT> error.

This has been corrected.


Category: Ensemble
Platforms: All
DevKey: MC870
Summary: Fix bug that Ens.MonitorService:Purge was using a wrong global name

Description:

This change corrects an internal error where Ens.MonitorService:Purge was using the wrong global to search for jobs to terminate.

Category: Ensemble
Platforms: All
DevKey: MC889
Summary: Fix bug that causes scheduler with WEEK syntax to go into tight loop

Description:

This change corrects a situation where the use of the WEEK syntax in scheduling events could cause a tight loop that wasted processor time.

Category: Ensemble.Adapter
Platforms: All
DevKey: DMC647
Summary: Fix problems with constructing reply messages

Description:

This corrects issues in constructing reply messages that could cause an infinite loop while attempting to contruct a message reply.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP772
Summary: Fix <UNDEFINED> in HL7 and X12 AckOut business operations

Description:

This change fixes an <UNDEFINED> error in the code for HL7 and X12 'AckOut' Operations.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP776
Summary: Fix Segment Terminators output in HL7

Description:

This change fixes an issue where EnsLib.HL7.Segment.OutputToIOStream causes the segment terminator characters that may optionally be appended to the pSeparators argument to appear in the MSH:2 field where the field separator characters should appear.

Category: Ensemble.ManagementPortal
Platforms: All
DevKey: TAP708
Summary: Fix bug with IN clauses in SQL generated by Message Browser

Description:

This change fixes an error with IN conditions used in the Message Browser search criteria. An empty IN condition would always be generated regardless of the user's specification.

Category: Ensemble.ManagementPortal
Platforms: All
DevKey: TAP785
Summary: Fix mapping of HL7 "leftoversegs"

Description:

This change corrects the segment references used in "leftoversegs" PathMap entries. Leftover segments are the remaining ones in an HL7 message after BuildMap() has parsed all the segments it can parse. Typically they are Z segments, but they can be any kind if the schema does not match the document.

Category: Installation.Windows
Platforms: Windows
DevKey: ALE1617
Summary: Fix silent client upgrade in old-style Windows installer

Description:

The silent upgrade of an instance which does not have "Caché Engine" feature installed will no longer result in "dialogs out of order" error.

Category: Languages
Platforms: All
DevKey: SJ2558
Summary: Release cached line flag tables when running out of space

Description:

This change causes Caché to release its cached line tables when internal free memory is low.

Category: Languages
Platforms: All
DevKey: SJ2559
Summary: Free up routine cache entries if we are about to give a <STORE> error

Description:

This change causes Caché to examine successively higher-level cached routines to free when it is about to run out of memory in the routine cache.

Category: Languages
Platforms: All
DevKey: SJ2560
Summary: Fix problem with merging two integer type (sub)arrays

Description:

This change corrects an error that could cause an <ACCVIO> when merging two arrays that had only integer subscripts.

Category: Languages.COS
Platforms: All
DevKey: CDS1403
Summary: Fix $ZDATEH() with trailing spaces

Description:

This corrects a situation where $ZDATEH() could return an error when the date ended with a trailing space character.

Category: Languages.COS
Platforms: All
DevKey: SJ2556, SJ2557
Summary: Fix problem with multiple references to a label on a dotted line or in a procedure

Description:

If a routine has two or more references to a label that is within a dotted section of code or procedure block, all but the first reference would be compiled incorrectly, causing them to branch to an incorrect location in the code. This has been fixed.

Category: Networking.ECP
Platforms: All
DevKey: GK665
Summary: Modified ECP server not to wait for journal sync when the request buffer does not insert any journal entry

Description:

To support ECP recovery the database server syncs its activities in the journal before the client can drop them. This change modifies ECP to not perform the synchronization when the request does not insert any journal entry.

Category: Networking.ECP
Platforms: All
DevKey: GK666
Summary: Modified ECP client request flushing rule

Description:

In rare conditions in low load environments, the ECP client may delay flushing pending requests. This modifies the client to flush as soon as possible.

Category: Object.ActiveX
Platforms: All
DevKey: JSL2597
Summary: Return server type of "%Library.Decimal" for decimals in ActiveX binding

Description:

This change forces the ActiveX binding to use %Library.Decimal for numeric return values.

Category: Object.C++
Platforms: All
DevKey: IYB552
Summary: CacheActiveX, updated the client meta information to use decimal for %Numeric and %Decimal

Description:

Before this change, CacheActiveX and the dynamic interface ofthe C++ binding projected %Numeric and %Decimal values as doubles. Now they are projected as decimal values, so the server and the client receive the data without any conversion.

Category: Object.Java
Platforms: All
DevKey: MAK2492
Summary: Add 'journal' to the export qualifiers as a dummy entry

Description:

This corrects a situation where an Export qualifier had an incorrect entry in its list which caused an error when used.

Category: Object.LanguageBindings.Light C++ Binding
Platforms: All
DevKey: JMM280
Summary: Fix month one-off error when Light C++ Binding stores timestamp in index

Description:

This change corrects a problem in which, when the Light C++ Binding stored an index entry for an index on a property of type %Timestamp, the month was 1 less than it should be (for example, it stored 0 instead of 1 for January). Timestamp values were (and continue to be) stored correctly in the data, it was only the index entries that were stored incorrectly.

Category: Object.LanguageBindings.Light C++ Binding
Platforms: All
DevKey: JMM289
Summary: Light C++ Binding correctly lock when performing unique index check

Description:

This change fixes a problem in which Light C++ Binding failed to lock when checking for duplicates on a unique index, which could lead to incorrectly violating a unique index constraint if multiple threads near-simultaneously attempt to store objects with the same index value.

This change affects Light C++ Binding C++ code generation, so after upgrading to a version containing this change, any Light C++ Binding generated C++ code must be re-generated and recompiled.


Category: Object.Library
Platforms: All
DevKey: TAP731
Summary: Fix terminator detection in %IO.StringStream.ReadLine() for CR/LF terminators

Description:

This change makes the ReadLine() method of class %IO.StringStream work properly when more than one LineTerminator character is specified. That is, it should break the line at whichever terminator appears first, and if the terminators are CR/LF it should return them both as a single detected-terminator string.

Category: Object.XML
Platforms: All 64-bit
DevKey: JN713
Summary: Ensure conversion of pointer to integer value is not truncated in SAX and XSLT

Description:

Use of an XDEV in CacheSAX or CacheXSLT requires a callout to return a string representation of a pointer value. The printf specifier that was being used would truncate a pointer on a 64-bit system. This has been corrected.

Category: Object.XML
Platforms: All 64-bit
DevKey: JN714
Summary: Rebuild Xerces Libraries for x64 in 2008.2

Description:

This change notes the rebuild of the Xerces Libraries for x64 in 2008.2.

Category: Security
Platforms: All
DevKey: BJB392
Summary: Fix %Alter_Table checking for Create Drop Index

Description:

A correction has been made to the SQL privilege checking. Before this change, it was possible to CREATE, DROP, or ALTER an index even if you did not have %Alter_Table privileges.

Category: SQL.DDL
Platforms: All
DevKey: DPV3346
Summary: SQL DDL: Fix unique check when added unique constraint through DDL

Description:

A problem has been corrected where a DDL statement added a UNIQUE constraint or PRIMARY KEY constraint to a table with existing data, and the data for the constraint was not unique, an error was not returned.

Category: SQL.GateWay
Platforms: All
DevKey: BJB394
Summary: Linked table query over 4000 char get extra char

Description:

This change corrects a problem with linked tables. If an application contained a query that was over 4000 characters long, an extra character would be added to the SQL that could result in an invalid statement and an <UNDEFINED> error at runtime.

Category: SQL.ODBC
Platforms: All
DevKey: JCN984
Summary: Initialize variable in SQLError causing access violation

Description:

This change corrects an SQLError that results when ODBC attempted to set up an environment header, if the connection has not been established.

Category: Studio
Platforms: All
DevKey: DVU2478
Summary: Debugger attach fail with 2007.1.6 server

Description:

This corrects an error caused by incorrect version checking in the Caché server. The error message that resulted was "class '%Studio.Debugger', method 'Attach': too many arguments". It is present in 2007.1 server when the maintenance version is higher then 5.

Category: System
Platforms: All
DevKey: CDS1511, CDS1518
Summary: Provide correct line location in debugger

Description:

Under some circumstances, the current location shown by the debugger could be one line before the correct line. This is now corrected.

Category: System
Platforms: All
DevKey: GK681
Summary: Routine load to prevent the current/active namespace from releasing

Description:

When searching for a routine to load, if any namespace is reconfigured, the unused namespace is released. Without this fix, an incorrect and freed namespace is associated with the current routine context. If the freed memory is reused for something else and if the routine namespace context is required for $TEXT or error trap, the consequences are unpredictable.

Category: System
Platforms: All
DevKey: GK685
Summary: Added support for more routines to be cached in multi-size routine environment

Description:

This change modifies the number of routines cached to be dependent on the amount of shared memory to be allocated per process. Prior to this, attempts to explicitly set the number of routines could result in <STORE> errors.

Category: System
Platforms: All
DevKey: SAP1148
Summary: Correct viewbuffer length

Description:

Previous changes to the viewbuffer message made the defined length of the viewbuffer too small, causing overwrite which corrupted the message queue pointers. Users might see <ACCVIO> in the message queues during view operations.

This has been corrected.


Category: System
Platforms: All
DevKey: SJ2549
Summary: Build line flag table into routine buffer, otherwise allocate as a buddy block

Description:

This change allocates the storage needed for monitoring or debugging a routine in the routine buffer itself.

Category: System.Backup/Restore
Platforms: All
DevKey: JO2248
Summary: Prevent control process from suspending system when Backup.General.ExternalThaw runs

Description:

A minor issue where the control process might have suspended the write daemon for 1 second after Backup.General.ExternalThaw() is executed has been resolved.

This situation could have occurred any time ExternalFreeze() was in force for more than 10 minutes. In this case, when ExternalThaw() is called there was a window while the write daemon was waking up where the control process does not see the extended time window set as part of ExternalFreeze() and tries to suspend the system. The write daemon starts running and the control process unfreezes the system one second later.

While this could have been seen on Windows or VMS systems, it was most likely to occur on a Unix system.


Category: System.Backup/Restore
Platforms: All
DevKey: SML1104
Summary: Avoid ExternalThaw() hang when write daemon is suspended

Description:

This change fixed a ExternalThaw() hang when the write daemon is suspended by ExternalFreeze() and no global buffers are available.

Previously, the ExternalThaw() would hang when it is started from a command line of a different Caché job from the job called ExternalFreee().


Category: System.Journaling
Platforms: All
DevKey: HYY1426
Summary: Keep write image journal journal info up-to-date during quick succession of journal switches

Description:

This change addresses an issue where the write image journal info was not kept up-to-date when journal files were being switched many times in a short period of time (for example, if the maximum size of a journal file was configured too small, and there was heavy journal activity).

If the system crashed during this time, the journal recovery at next startup may take a long time due to the outdated journal info.


Category: System.Journaling
Platforms: All
DevKey: HYY1449
Summary: Fix an <UNDEFINED> error in cluster journal restore

Description:

This change corrects an issue that caused cluster journal restore to abort with an <UNDEFINED> error.