InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2010.2.4 and 2010.2.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.

Prior to beginning an upgrade of a Caché or Ensemble instance, InterSystems recommends that the be shut down normally.

After each upgrade step, the following conditions apply:

  • Routines

    Compiled routines are upward-compatible from version to version and do not need to be recompiled unless specified otherwise in the upgrade notes for a specific release.

    Because most versions contain improvements in the routine compiler, in the generated code, and/or efficiencies in the runtime support, customers may decide to recompile their routines to take advantage of new features and meta-routine information. Those customers whose actions implicitly access this underlying information must recompile their routines. An example of such access is source-level debugging on version X of code compiled on version earlier than X.

    If you recompile routines, they should be recompiled after classes are recompiled.

  • Classes, SQL, Projections, Proxy Classes

    InterSystems requires that all classes be recompiled after an upgrade. The following command will upgrade and compile the class dictionaries in every namespace:

        Do $SYSTEM.OBJ.CompileAllNamespaces("u")
    

    You must regenerate any proxy classes used in the upgraded instance by following the instructions in the appropriate guide(s) in the Caché Language Bindings set. You must also purge any cached queries in any upgraded namespace by issuing the command:

        Do $SYSTEM.SQL.Purge()
    

    in that namespace.

  • Exported XML

    vUnless specified in the upgrade notes for a specific release, exported XML files can be imported into later releases.

    The reverse is NOT true. Later versions could be using new features not present in earlier versions, and could have a different class dictionary version number which alters how these classes are stored internally that can not be undone when importing to a previous version.

  • Debugging

    InterSystems also recommends recompiling routines and classes for applications under development. This synchronizes the debugger with the expected format of the compiled code.

  • Caveat

    Because recompiling necessarily updates system data associated with the routine, users who recompile classes or routines must have write access to this data (^ROUTINE) in each namespace where the object being compiled is mapped. Failure to observe this requirement will result in
    ERROR #302: the database is read-only.

Upgrading ECP Configurations
The following guidelines apply to the process of upgrading ECP configurations:
  • Unless explicitly noted for a particular version, the protocol used to communicate among ECP systems is fully compatible across versions.
  • For ECP configurations consisting of stateless, independent database and application servers, an ECP configuration may be updated incrementally, system by system.

    The application servers should be upgraded to the new version first. Once all application servers have been upgraded, the database servers can be serially upgraded.

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: CMT914
Summary: Resolve a bad pointer reference in the function responsible for destroying mutex objects

Description:

This correction resolves a bad pointer reference in the function responsible for destroying mutex objects. The problem corrected would have disproportionately affected state-aware sessions since these use mutex locks to implement request serialization.

Category: Installation.Windows
Platforms: All
DevKey: ALE2028
Summary: Correctly apply WIJ on upgrade on Windows

Description:

Windows installation was trying to apply the WIJ (Write Image Journal) before Caché was stopped. As a result, the WIJ was not applied and installation could fail when a custom WIJ directory was used in the original instance.

Category: Languages.COS
Platforms: All
DevKey: GGC509
Summary: Correct ptrie subscript corruption

Description:

This change corrects a problem where the subscript of an array may be become corrupted. The circumstances are rare and involve the encoded form of the subscript being of a different type than the unencoded form, as well as having the subscript be killed and then re-inserted.

Category: Networking.ECP
Platforms: All
DevKey: GK930
Summary: Long Unicode strings across ECP may overflow the large string stack when fetching from a different endian db-server

Description:

This change corrects a problem that could cause an overflow on the string stack when fetching Unicode strings over ECP where the server and client differ in their endianness.

Category: Object.DotNet
Platforms: All
DevKey: JCN1201
Summary: Use "." as decimal separator in foreign locals

Description:

Belgian and other foreign locales use "," as a decimal separator, which causes problems when sending parameters to Caché requiring "." as a decimal separator. This is now fixed.

Category: Security
Platforms: All
DevKey: STC1942
Summary: Don't allow $SYSTEM.Security.AddRoles() be called when ZINSERT active

Description:

Previously a user could subvert the $SYSTEM.Security.AddRoles() mechanism and gain access to unauthorized roles at the programmer prompt. This has been fixed by this correction. We now disallow adding roles when a ZINSERT has been made into the user's routine call stack.

Category: Security
Platforms: Solaris
DevKey: WDS395
Summary: Eliminate MD5* function name collisions

Description:

The Caché kernel contained internal implementations of the functions MD5Init(), MD5Update(), and MD5Final(). The InterSystems function MD5Final() had a signature (argument list) that did not match that of the reference implementation in RFC 1321.

Solaris includes implementations of MD5Init(), MD5Update(), and MD5Final() that do match the reference implementation. Solaris system functions use these functions internally.

In the Caché kernel, these references resolved to our implementations rather than to the Solaris ones, resulting in an argument stack mis-match.

This has now been corrected.


Category: System
Platforms: X86
DevKey: CDS1904
Summary: Multiply <MAXNUMBER> error not caught by TRY/CATCH on x64

Description:

If a multiply operator near the start of a TRY block results in a <MAXNUMBER> error, the error may not be caught by the CATCH block on a 64-bit platform. This is now correctly handled.

Category: System
Platforms: All
DevKey: JLC1480
Summary: Fix crash in $zcvt(string,"I","HTML")

Description:

This change fixes a problem in $ZCVT(string,"I","HTML") that could cause either a <TRANSLATE> error or a crash, depending on the platform and on other circumstances. The problem happened when the source string ended on a numeric entity without the terminating ";" (e.g. "&#160") but the memory position immediately after it did contain a garbage byte with ";". The problem affected not only $ZCVT() but also HTML translations done during device input.

Category: System
Platforms: All
DevKey: JLC1481
Summary: Fix pattern match table for CP1252

Description:

In locales based on character set CP1252, two characters had the wrong pattern match attributes.

The fixed behavior is:

$C(215) ?1P (multiplication sign)
$C(223) ?A and ?1L (small letter sharp S)


Category: System
Platforms: All
DevKey: JLC1488
Summary: Fix buffer overflow in xltbyte2str()

Description:

This change fixes a potential buffer overflow that could happen in rare circumstances when outputting strings with non-ASCII characters to TCP devices using the UTFJS (UTF-8/JavaScript) translation.

Category: System
Platforms: OpenVMS
DevKey: JO2432
Summary: Don't create cache.ids file for -cd (single user instance) on OpenVMS

Description:

This change corrects the unnecessary creation of a file in single-user mode on OpenVMS.

Category: System
Platforms: All
DevKey: SAP1435
Summary: Sporadic failures of daemons causes hung instances

Description:

There are at least four related cases of startup hangs. In all cases, one of two daemons was found to be absent (that is, had become <defunct>) when startup hung.

This change corrects a situation where the daemons are exiting prematurely in the control process daemon creation sequence, because they are the two that attempt to obtain a lock on the <instance>/bin/clock file.


Category: System.Callin/Callout
Platforms: All
DevKey: SAP1459
Summary: Fix session hang doing $ZF(-1,"command") where the command is an error in the child

Description:

In 2010.1, a callout to a utility (for example, Novell Mono) which passes an invalid command can result in a hang of the child process, and consequently the Caché session to hang.

Now this will be detected and the user given an opportunity to abort the child process.


Category: System.Licensing
Platforms: All
DevKey: RJW1885
Summary: Exception processing %SYSTEM.License:ProcessList query

Description:

Under certain circumstances the %SYSTEM.License:ProcessList query could encounter an exception, in particular if it is run while a process is running that was started with the emergency diagnostic login argument (-B).

Category: System.Mirroring
Platforms: All
DevKey: JO2434
Summary: Don't require journal files which have been validated by the other node

Description:

This change resolves a problem where a mirror member may fail to become either the primary or the backup because it has purged some journal files before it had a chance to verify that they contained valid ends. The validation code has been enhanced so that the instance understands that validation of those files is no longer required.

Category: System.Mirroring
Platforms: All
DevKey: SML1337
Summary: Fix <UNDEFINED> error when journal file did not have rollback point

Description:

If the rollback journal file did not have the transaction processing rollback point recorded in its header, it logged a message in cconsole.log with the wrong variable name. This is now fixed.

Category: System.Mirroring
Platforms: All
DevKey: SML1352
Summary: Avoid long scanning for journal file end when backup node connects to primary node

Description:

After the backup node has shut down and then restarted, the backup node might fall behind the primary when there are lots of journal records within the same mirror journal file (current journal file). This may cause the backup node to take so much time finding the end of the journal file that it could cause the mirror connection to time out. As a result the backup could not connect to the primary until the primary did a journal switch.

This condition has been fixed.


Category: System.Monitoring
Platforms: All
DevKey: SAP1434
Summary: An unexpected error in Monitor causes further errors

Description:

This change corrects a problem where an unexpected error in the system monitor caused a cascade of other spurious errors.

Category: Zen
Platforms: All
DevKey: SAM131
Summary: Correct defect in multiSelectSet initialization code

Description:

The multiSelectSet widget had a defect in its initialization code that could manifest itself if the widget was being dynamically created or updated from the server side.

The widget would behave fine for an initial value that was a singular value but would fail to properly check off options if its initial value is a comma-separated string of values. This resulted in visual artifacts where the value of widget on record was not properly reflected on the display and was highly undesirable.

This change traps and corrects this condition, ensuring that the rendering of the value and the internal representation of the value remain in sync regardless of how and when the widget was created.



© 2011, InterSystems Corporation. All rights reserved.