InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2010.1.1 and 2010.1.2 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 7-bit ASCII range

Description:

This change ensures that the values assigned to configuration parameters in CSP.ini are always expressed in 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. Recent changes had resulted in this discipline not always being followed.

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 makes the Gateway respond gracefully to cases where access to further memory is 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: 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.

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 automatically 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 correction fixes a mis-routing issue with state-aware applications. This fault would be provoked by the following chain of events:
  1. A request from browser A is assigned to Cache process X and marks the session as state-aware (sets Preserve=1).
  2. Browser A then issues a new request which terminates the state-aware session (by calling EndSession()). This action sets Preserve=0 and ends the session on the server. However, browser A still has a session cookie marked as state-aware.
  3. Browser B issues a request which is assigned to Cache process X (since this has been returned to the pool of state-less connections) and marks the session as state-aware.
  4. Finally, browser A (which was left open) issues a request which is erroneously routed to Cache process X (which is now exclusively owned by browser B). Cache responds to this security violation by halting process X.
  5. Under these conditions, the Gateway then records the following error in its event log:

===
Error Condition 
CSP application closed the connection before sending a complete response 
===
with the end results that the request from browser A fails and browser B is unable to continue.

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

Description:

This modification protects against a potential memory violation in the function responsible for reading data block headers from Cache.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP1002
Summary: Enable setting HL7 segments by path where path contains 'Any', 'Zxx' or 'Hxx'

Description:

This change allows setting a segment into an HL7 message by path where the path uses a wildcard. Formerly, an error would result because the name of the segment being set did not exactly match the DocType name corresponding to the path- specified segment position. It could not match because of the wildcard segment name. Supported wildcard segment names are 'Any', 'Zxx' or 'Hxx'.

Category: Installation.Windows
Platforms: All
DevKey: ALE1898
Summary: Preserve Windows service credentials on upgrade

Description:

This change makes sure the Windows service will not be deleted when running uninstall sequence on upgrade.
Note: This change must exist in the version being upgraded to have any effect.

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. The specific case is using indirection for the global name with the same local variable that 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: Object
Platforms: All
DevKey: MAK2861
Summary: %Dictionary.CompiledClass:%ExistsId method was returning true for a class that exists but is not compiled

Description:

This changes corrects a problem where the %Dictionary.CompiledClass:%ExistsId method would return true for a class that exists but is not compiled yet.

Category: Object
Platforms: All
DevKey: MC1088
Summary: Better management of class reloading

Description:

This changes corrects a problem where a stale version of a class could be used when connecting to a version of Caché 2008.2 or older. Now the class is always refreshed for thse versions.

Category: Object.Class Compiler
Platforms: All
DevKey: MAK2864
Summary: Fix detection of 'Quit (1)' to return '1' rather than '-1'

Description:

This change corrects a situation where a class method that exited with
Quit (1)
could end up returning the value -1 instead.

Category: Object.Class Compiler
Platforms: All
DevKey: MAK2869, MAK2874
Summary: Do not normalize ##class or ##super when precompiling an INC file

Description:

If you have a macro definition like this inside an INC file:
#define createNewInstanceExt(%ClassName) ##class(%ClassName).%New()
the the macro compiler attempted to normalize the ##class classname in the precompiled information associated with this INC file.

However, this is context-sensitive and in this class '%ClassName' is just the argument to the macro as well so it is not valid to expand this inside an INC file.

Caché now detects this and avoids expanding this until an application invokes this macro.


Category: Object.Class Compiler
Platforms: All
DevKey: MAK2870
Summary: Do not use system implemented method when multiple arguments

Description:

This change corrects a situation where a method that just returns the value of one of its arguments could get a <PARAMETER> error when there were two arguments to the method.

Category: Object.Class Compiler
Platforms: All
DevKey: MAK2885
Summary: Method with codemode=call could call superclass when subclass had different implementation

Description:

This change corrects a problem with method overriding. Suppose an application defined a method, X(), in a superclass, and another method, Y(), that was marked as "codemode=call", and method Y just calls method X.

If the application was changed so that a subclass overrode method, X, the class compiler was not detecting this and calling the wrong method. It now properly invokes the overriding method.


Category: Object.DotNet
Platforms: All
DevKey: IYB644
Summary: CacheProvider, exclude calculated properties from meta information internal dictionary

Description:

This change fixes an error in the validation of meta information when a class has more than one calculated property that could result in an application crash.

Category: SQL.GateWay
Platforms: All
DevKey: MIT972
Summary: Clean some variables in JDBC linked table queries

Description:

This change corrects a memory leak in the JDBC gateway.

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: Studio
Platforms: All
DevKey: DVU2700
Summary: Initialize Source Control for secondary thread connection

Description:

This corrects a problem where class compilation had been moved to a secondary thread, but the source control informtaion for that thread had not been initialized.

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

Description:

This change modifies the release for cached routines to be more aggressive when the system is out of routine buffers. If a process attempts to allocate another routine buf but all system routine buffers are in-use, the algorithm reduces its own cached routines up to max allowed - 10%. If still no routine buffer is available, then it 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 alters Caché to handle various cleanup work to prevent possible deadlock, for example, to release some routine buffers for the child process to use.

Category: System
Platforms: All
DevKey: GK835
Summary: Fixed sub-class loader error recovery

Description:

In a rare condition, if the superclass fails to load because the database is unexpectedly not reachable, it may leave that superclass in a partially loaded state. This blocks loading any derived classes of that same superclass. (They end up waiting forever for the superclass to load).

This has now been corrected.


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: SAP1283
Summary: Harden startup against "impossible" conditions

Description:

This change hardens startup of an instance on a cluster node when the instance is already running on another node.

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
Platforms: All
DevKey: SAP1312
Summary: MONITOR fails to email on journal failure and FreezeOnError=1

Description:

This correction addresses a situation where, if the system fails on journal error and FreezeOnError is set, MONITOR does not report the error via email.

Category: System
Platforms: All
DevKey: SAP1317
Summary: $ZUTIL(110) returns null even though system has valid nodename

Description:

This correction fixes a situation where this function returns null even though the underlying operating system services return the actual system name.

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 cleanup daemon might failed to clean up a dead job if its resource is used by the cleanup daemon.

Category: System
Platforms: All
DevKey: SML1208
Summary: Fix job server crash on JRNSWITCH

Description:

This changes corrects an error where, when a job server process was started to perform a database backup it could get access violation.

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

Description:

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; it had been removed in version 2009.1,

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 the journal position is not tracked. This change corrects a situation where if the slave didn't stay idle for > 60 seconds (enough time to clear the old journal position), it prevented purging the old journal files.

Category: System.I/O
Platforms: All
DevKey: SAP1309
Summary: Return NOTIMPLEMENTED in FileCompact on 10.1

Description:

The ^DATABASE routine gives an option for File Compaction. This change disables the feature in 2010.1.

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 Cache startup with a <VALUE OUT OF RANGE> error. In general, the more frequent the journal switches, the more likely this error would occur.

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: RJW1804
Summary: $System.License.Login can produce incorrect license id in jobbed process

Description:

This change corrects an error that could insert trailing null characters into the license identifier of a jobbed process that called $SYSTEM.License.Login() if it's parent had also called $SYSTEM.License.Login().

Category: System.Licensing
Platforms: All
DevKey: RJW1809
Summary: License Id is incorrect for processes jobbed from a CSP page

Description:

Beginning in Cache 2010.1, a process started by the job command from a CSP page when a user is logged in does not have the correct license Id. Its license Id is the user name instead of username@clientIPaddress. Consequently, it does not share a license unit with the CSP session. This problem does not occur with anonymous CSP connections. This change corrects the problem.

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

Description:

This corrects a problem where, under some rare circumstances, expired CSP sessions may remain in the license "grace period" longer than the expected 5 minutes. 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 changes corrects a situation where cleanup algorithms for processing dead jobs did not properly update the system monitoring counters and statstics.

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

Description:

In 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. Furthermore, it only checks the collation of the physical global when the mapping entered is a subscript-level mapping.


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 corrects a design shortcoming where zenThreadId values were based on server $JOB values instead of logical threads.

If two independent events cause conflicting DOM updates, then the user may be presented with an inconsistent user interface. The $JOB value on the server does not guarantee that threads will not be processed out of order and can lead to false thread assertion problems depending on how requests are processed.

This change uses a unique value generated on the client browser to identify logical threads instead of using the $JOB value from the server.