InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2009.1.4 and 2009.1.5 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: ALE1821
Summary: Do not reset password in CSP.ini for external CSP Gateway on upgrade

Description:

This change stops the Windows installation so it no longer reset passwords in the CSP Gateway for server connections in CSP.ini for external web servers on upgrades.

Category: CSP.Gateway
Platforms: All
DevKey: CMT779
Summary: Ensure that the Gateway responds gracefully to cases where access to further memory is denied by the operating system (particularly when buffering large amounts of response data)

Description:

This change ensures that the Gateway responds gracefully to cases where requests for additional memory are denied by the operating system. This scenario occurs particularly when buffering huge amounts of response data in order to generate a HTTP content-length header field. Previous versions did not always handle this event cleanly and an access violation followed by memory leakage could occur.

Category: CSP.Gateway
Platforms: All
DevKey: CMT808
Summary: Ensure that the terminating CRLF is discarded from the final output stream where response chunking is in operation between CSPnsd and mod_csp, but a chunked response is not expected by the client

Description:

This build will ensure that the terminating CRLF is discarded from the final output stream where response chunking is in operation between CSPnsd and mod_csp, in cases where a chunked response is not expected by the client.

Category: CSP.Gateway
Platforms: All
DevKey: CMT809
Summary: Protect against a problem in the IIS v7 Native Modules interface that could cause a memory access violation to occur if an invalid query string was submitted

Description:

This change protects against a problem in the IIS v7 Native Modules interface that could cause a memory access violation to occur if an invalid query string was submitted.

In particular, URLs containing empty query strings after the introducing '?' character could cause access violations in the hosting application pool.


Category: CSP.Gateway
Platforms: All
DevKey: CMT811
Summary: Resolve an access violation that could occur if a connection reserved for a state-aware session closed unexpectedly

Description:

This change resolves an access violation that could occur if a connection reserved for a state-aware session closed unexpectedly. This error is reported in the Event Log as:
Error Condition
Exception caught in f:cspTCPIPOpenSession: c0000005|62; etc ...
In addition to this fix, the logic for testing the health of state-aware connections has been strengthened. The periodic test will be suppressed if there is heavy user activity against the connection in question. If a connection reports a network error, the Gateway will perform the full round-trip test before marking the connection as defunct and closing its (client) side of the connection.

Category: DeepSee
Platforms: All
DevKey: DPV3594
Summary: DEEPSEE: Correction for Excel Export

Description:

This change corrects a defect that could prevent data from being properly exported to Microsoft Excel spreadsheets.

Category: Ensemble.Adapter
Platforms: All
DevKey: TAP973
Summary: Make SQL Adapter properly drop statement handle after xDBC SP call

Description:

This change fixes an error where the statement handle of a Stored Procedure call through the SQL Adapter is not correctly dropped. This leads to resource leakage in the target JDBC or ODBC driver.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP856
Summary: Fix bugs with VDoc BuildMap() behavior

Description:

This change fixes several systemic bugs in HL7 and other VDoc classes, and makes the DTL compiler generate a PokeDocType() for new target objects instead of setting DocType directly. A new object generally is missing segments it needs to pass schema validation so there's no point in triggering a BuildMap() on it immediately. The DTL change arranges this.

The changes are:

  • Make CopyValues() generate cloned segment objects in the target, not just copy object references or segment ID's. This prevents a bug where if the target object produced by a DTL is deleted without ever being saved, it could delete the segment storage referred to by the source object.
  • Make buildRuntimeIndexFromPath() populate the "bidirectionalLink" map. This prevents duplicate segment object allocation when retrieving segments by path and by index.
  • Fix code that was intended to clear BuildMapStatus whenever a new segment is added or removed, but was mis-coded so that it didn't. This could cause the segment map to fail to be re-built in the course of a DTL when it should have been.
  • Specify pKeepParsingAfterError=0 in calls to BuildMap() that are invoked internally in the course of adding or removing segments in a document. This should make DTL operations faster by avoiding looping. It also means that BuildMapStatus values in the final target object from a DTL may be less verbose than those from Validation or HTML display of a complete message.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP912
Summary: Fix PokeDocType for VDoc Segment classes

Description:

This change fixes the method PokeDocType() of the various VDoc Segment classes to be the same as DocTypeSet(). PokeDocType() is useful for Document classes to avoid the overhead of the BuildMap() invocation that is implicit in a normal Set of the DocType property. However, for Segment classes there is no BuildMap(), but some helper shadow properties do need to get set.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP978
Summary: Fix HL7 schema loader to allow 'Any' as wildcard seg, prevent circular base reference loop

Description:

This change fixes two bugs in the XML HL7 schema loader:

  1. Allow wildcard segment references named 'Any'.
  2. Do not hang the job in an infinite loop if someone saves a schema with base referring to itself.

Category: Object.CacheProvider
Platforms: All
DevKey: JCN1092
Summary: Avoid nested lock in connection pool logic

Description:

Under extreme connection situations on multiple threads (50+ simultanious connections), resource issues at the socket layer cause failures which can end up causing a freeze in the connection pooling logic, blocking all threads. The failure is machine dependent in terms of the number of connections needed to cause this, but the fix is the same for all platforms.

Category: Object.XML
Platforms: All
DevKey: JN857
Summary: %XML.TextReader fails to get very long CDATA value

Description:

This change corrects a situation where %XML.TextReader fails to get very long CDATA value. This will also apply to any character, comment or cdata.

Category: SQL
Platforms: All
DevKey: JLF305
Summary: Fix flattenExists to allow for missing mt("f",*) node

Description:

This change corrects a situation where an SQL parsing error was reported for the case where it expected an EXISTS clause but none was found.

Category: SQL.GateWay
Platforms: All
DevKey: MIT872
Summary: Add explicit removal of LOBs in CreateStreamJ^%apiGTW

Description:

This change fixes a problem specific to the Microsoft SQL Server. Stream retrieval for multiple rows caused JVM memory to grow. Now, we do not rely on garbage collection but instead explicitly remove large objects.

Category: SQL.ODBC
Platforms: All
DevKey: AND1084
Summary: ODBC: Fix misplaced curly brace in Statement::Drop

Description:

This change corrects a <STORE> error caused by a misplaced curly brace internally in the ODBC driver.

Category: SQL.Privileges
Platforms: All
DevKey: DPV3536
Summary: SQL: Correct display of some schemas in SMP when using Czech Unicode locale

Description:

A problem has been corrected where some schema names would not display properly in the Management Portal when Czech Unicode Locale was installed.

Category: SQL.Privileges
Platforms: All
DevKey: DPV3580
Summary: SQL Privileges: Correct issue compiling a view when view owner has select privileges on the view queries columns via a role

Description:

A problem has been corrected where a view would not compile even when the owner of the view has all the necessary privileges on the view query's table(s) granted to the owner via a role.

Category: System
Platforms: All
DevKey: GK824
Summary: Process routine cache release algorithm change

Description:

This change addresses how Caché handles the situation of having cached queries and being out of routine buffers.

If a process attempts to allocate another routine buffer but all system routine buffers are in-use, it will now reduce its own cached routines down to 10% of its allowed maximum. If still no routine buffer is available then Caché then drops the system wide number of routines cached per process.


Category: System
Platforms: All
DevKey: GK825
Summary: Modified job creation to check and do some house cleaning when waiting for a job to start

Description:

While waiting for a job to start, this change allows Caché to handle various cleanup work to prevent possible future deadlocks involving resource shortages.

Category: System
Platforms: All
DevKey: HYY1479
Summary: Build zlib library on Linux platforms

Description:

On Linux distributions where the zlib library (libz.so) was not installed in the searchable path (by default or by user's choice), one would get <DYNAMIC LIBRARY LOAD> error running Cache compression/decompression utility (e.g., $System.Util.Compress() etc.). This change addressed that by including a copy of the zlib library in the Caché installation.

Category: System
Platforms: Windows
DevKey: JO2310
Summary: Fix problem where clearing wdstop could cause a list of gaccupd waiters to be dropped

Description:

This change corrects a rare problem on Windows systems where when the control process resumes a system that had been suspended due to lack of write daemon activitiy (for example, a long backup). In this circumstance, it was possible for a small number of jobs to be permenently left suspended.

Category: System
Platforms: Windows
DevKey: SAP1229
Summary: Fix problem with duplicate cconsole messages ending in newline

Description:

This corrects an issues where duplicate console messages on which a newline has been supplied were not being suppressed.

Category: System
Platforms: All
DevKey: SAP1282
Summary: Use /tmp on cache.ids shared memory object to insure invisible to other nodes

Description:

In cases where CacheIDS<device #>.<inode #> has same value on both nodes accessing a shared disk, confusion can arise. One symptom of this was false status messages being sent which caused the partner node to crash.

Category: System
Platforms: All
DevKey: SAP1289
Summary: Windows message hang when target terminates

Description:

A message transmission that requires a reply (such as JOBEXAM) may hang forever if the target of the message exits after receiving the message but before responding to the request. This has now been fixed.

Category: System.Cluster Specific
Platforms: All
DevKey: GK827
Summary: Modified Cluster session not to track jrn position

Description:

The inter-cluster ECP session activity is not a regular session, and journal position is not tracked. But the session is started with the current journal position, and if the slave did not stay idle for more than 60 seconds (time enough for it to clear the old journal position), it prevented purging the old journal files.

This is now handled correctly.


Category: System.Cluster Specific
Platforms: All
DevKey: JO2314
Summary: Corrections for recovery of cluster mounted encrypted databases

Description:

A problem affecting OpenVMS Clusters and cluster mounted encrypted databases has been resolved which would have resulted in database degradation if blocks from an encrypted database were recovered from the pij during cluster failover or during cluster recovery at startup.

This change is compatible with the existing cluster code so that a running cluster can be upgraded one node at a time without shutting down the entire cluster. However, it is crucial that encrypted databases must not not be cluster mounted until ALL of clustered instances (for that Caché cluster) have been updated to this version.

CAUTION: A mistake in upgrading the cluster may damage cluster-mounted encrypted databases during the next cluster failover/recovery.

Category: System.Cluster Specific
Platforms: All
DevKey: JO2316
Summary: Add missing interlocks for reading pij label into gcommon buffer

Description:

This correction resolves a rare problem during cluster recovery after the cluster master shuts down or fails. This defect prevents subsequent attempts to join the cluster. The problem can occur any time the master leaves the cluster, gracefully or not and required restarting all of the cluster nodes to resolve it.

Category: System.Journaling
Platforms: All
DevKey: HYY1544
Summary: Cluster journal restore

Description:

This change corrects an error that could occur during a journal restore of an ECP cluster. Under some circumstances, the last journal records in the restore would not be posted to the database because of an error in waiting for all the records to be written to disk.

Category: System.Journaling
Platforms: All
DevKey: SML1203
Summary: Handle Bitset rollback when a new global was created

Description:

This change fixed a transaction rollback problem when there are BITSET and Global SET journal records on the same global node. Under some circumstances, the SET journal record might not be rolled back when it should be.

Category: System.Licensing
Platforms: All
DevKey: RJW1798
Summary: ODBC connection consumes a license with web add-on

Description:

This change corrects a situation that would cause anonymous ODBC connections originating from a Windows terminal server session to incorrectly consume a license unit when a Web Add-on license is used.

Category: System.Shadowing
Platforms: All
DevKey: HYY1517
Summary: Prevent cluster shadow with filter from applying an update twice

Description:

This corrects an issue that caused cluster shadows with a filter to apply an update twice in a row. This unnecessarily inflated the journal files on the shadow side and degraded shadowing performance. It did not affect data integrity, however, as the duplicate followed the original record immediately.

Category: System.Shadowing
Platforms: All
DevKey: HYY1532
Summary: Address a case of shadow corruption/hanging when journaling is restarted on the source side

Description:

This corrects a defect that could cause a shadow to create a corrupted copy of source journal file and hang in certain circumstances involving stopping and starting journaling on the source side.

Category: Utilities
Platforms: All
DevKey: SML1197
Summary: Fix %SYS.Namespaces.GetGlobalDest() with single level subscript

Description:

A previous change caused %SYS.Namespaces.GetGlobalDest() to fail if a single-level subscript was used as the third argument, and it was not enclosed in quotes. This change restores the previous capability.

Category: Utilities.Configuration
Platforms: All
DevKey: STC1751
Summary: Do not validate collation of globals during system startup

Description:

Previously releases, when a new global subscript-level mapping was detected at startup, Caché validated that the collation of the physical global in the database matched the collation, if the global was populated with data. If the collation did not match, Caché reported an error, and did not save the global SLM mapping.

If the configuration file was edited by hand, this could cause problems at startup when Caché attempted to mount the database.

This has been changed so that Caché only checks the collation when it is entered via the Management Portal. Futhermore, it only checks the collation of the physical global when the mapping entered is a subscript-level mapping.


Category: Utilities.Configuration
Platforms: All
DevKey: STC1755
Summary: Changing CPF parameter locksiz should not require a restart

Description:

The "locksiz" entry in the CPF file contains the size (in bytes) of memory allocated for locks. The startup activity rounds up the value to the next multiple of 64 kilobytes. The default is 1,179,648 bytes. On the HP platform, the default is four times the usual default or 4,718,592 bytes.

The range is 65536 bytes up to the gmheap size. If a system needs more room for the lock table, increase the gmheap parameter as well.

The change takes effect immediately without the need for a restart.


Category: Utilities.Configuration
Platforms: All
DevKey: STC1759
Summary: Entering a null password using LDAP will no longer authenticate the user

Description:

When using LDAP for user authentication, if a user entered a username, with a null password, they would always be authenticated and allowed into the system. This is because the operating system LDAP libraries treat this as an "anonymous" bind, and uses the LDAP simple_bind_s function to succeed with a null password.

With this change, Caché tests to see if a null password has been entered, and reject the attempt.

This is a problem only on the following client to server connections:

  • Unix or OpenVMS client to any LDAP server
  • Windows client to non active directory LDAP server

It is not a problem on a Windows client to a Windows Active Directory LDAP server connection.