InterSystems Documentation 
Caché and Ensemble Maintenance Kit Release Notes


This document provides a list of the changes between versions 2010.2.5 and 2010.2.6 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: Ensemble
Platforms: All
DevKey: DDP112
Summary: Fix startup and shutdown errors due to %Library.EnsembleMgr

Description:

This change corrects a situation where Ensemble startup and shutdown could produce extraneous messages in the console log.

Category: Ensemble
Platforms: All
DevKey: DDP294
Summary: Throttle processing of events during message bank client OnKeepAlive

Description:

Prior to this change, the event log processing which occurred during the OnKeepAlive() callback in Ens.Enterprise.MsgBankOperation was not in any way throttled. The code did handle situations where no events had ever been banked, but in those cases where some events had been banked in the past and a large number of events had been banked in the interim, the code could attempt to send very large amounts of data to the message bank. With this change, Ensemble will now attempt to process at most 10,000 events during each call to OnKeepAlive().

Should users not wish to bank any events prior to the current time, they should disable the Message Bank Operation components and then kill the ^Ens.MsgBank("LastEvtId") global node to get the client code to start banking events starting from the current time.


Category: Ensemble
Platforms: All
DevKey: DDP324
Summary: Add IsProductionRunning() API to Ens.Director

Description:

This change adds a new IsProductionRunning classmethod to the Ens.Director class. The new method is not a foolproof indicator of whether the current production is running, as it does not lock $$$EnsRuntime and thus may not detect situations where a production is changing state. However, it will return a reasonably reliable indicator of whether the production is running without introducing any lock contention on the $$$EnsRuntime global as is present in the more reliable GetProductionStatus() method of Ens.Director.

GetProductionStatus() is still the most reliable indicator of the current production status.


Category: Ensemble
Platforms: All
DevKey: MC1139
Summary: Stop productions properly when Caché is shutting down

Description:

Stop productions properly when Caché is shutting down, namely:
  1. When Caché shuts down, it stops productions in various namespaces concurrently.
  2. Stop production with timeout specified in production configuration.
  3. Call Stop with force=1

Category: Ensemble
Platforms: All
DevKey: TAP1204
Summary: Add Reset() method to class %IO.IParts.MetaIO

Description:

This change adds a Reset() method to class %IO.IParts.MetaIO. This allows a stream object of this type to be re-used with multiple output streams without building an ever-increasing list of output streams. Instead, the object can now be re-initialized using the Reset() method before a new output stream is added. (The same also applies to CopyInput streams.)

Category: Ensemble.Adapter
Platforms: All
DevKey: DDP311
Summary: Fix ConfirmComplete behaviour in FTP Inbound Adapter

Description:

The logic to ensure that the entire file was downloaded when ConfirmComplete is set to "Size" was flawed and could previously result in incomplete files being downloaded from the FTP server. Furthermore, it was also possible that the adapter would not wait long enough to ensure that the file size was no longer changing before determining that it should be processed.

Both of these problems have now been corrected. However, this may lead to slower processing if ConfirmComplete is set to "Size", as the code will wait at least as long as the FileAccessTimeout to ensure that the file size hasn't changed.


Category: Ensemble.Adapter
Platforms: All
DevKey: DDP325
Summary: Correctly determine whether Ensemble SOAP service may be invoked

Description:

In previous releases of Ensemble, SOAP services were not correctly determining whether the production was currently running, and could attempt to start the service while the production was troubled.

Furthermore, the SOAP service was not checking whether the related business service had been disabled, and could thus be incorrectly invoked when the configuration item had been marked as disabled.

This change corrects both these issues.


Category: Ensemble.Adapter
Platforms: All
DevKey: JN976
Summary: Handle 'UT' data type in DICOM

Description:

DICOM now handles 'UT' data type

Category: Ensemble.Adapter
Platforms: All
DevKey: JN977
Summary: Update Abstract Syntax Dictionary

Description:

This change updates the Abstract Syntax Dictionary which was out of date.

Category: Ensemble.Adapter
Platforms: All
DevKey: TAP1213
Summary: Fix AllowedIPAddresses, add hostname support to TCP Outbound Adapter

Description:

This change fixes the AllowedIPAddresses feature of the TCP Inbound Adapter its hostname resolution sub-feature. This change also adds hostname resolution to the !-IPAddress feature of the TCP Outbound Adapter, supporting a list of allowed remote connection addresses that can be numeric or named.

Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP1205
Summary: Fix HL7 SOAP Operation to avoid ever-increasing list of MetaStream output streams

Description:

This change fixes the class EnsLib.HL7.Operation.SOAPOperation to avoid building an ever-increasing list of MetaStream output streams.

Category: Languages.COS
Platforms: All
DevKey: GGC512
Summary: Correct problem with ptrie arrays during merge

Description:

When a merge command is executed, there is a chance that subsequent kill operations on a single subscript in the updated array would kill the entire array instead of just the intended single subscript.

This change corrects that.


Category: Languages.COS
Platforms: All
DevKey: GGC514
Summary: Correct various ptrie local array problems

Description:

This change fixes problems with ptrie local arrays. The symptoms are that Caché will gives a <SYSTEM> abort or a segmentation violation. This usually happens when the application is killing an array or executing a $O on an array.

Category: Networking.ECP
Platforms: All
DevKey: GK947
Summary: Corruption of long Unicode strings across ECP

Description:

In very rare cases, when a long string cannot be compacted, and the global is subscript mapped, and the global value is accessed using 2 argument $DATA (to get the value during the operation), the server returned value might be corrupted. ghis is now fixed.

Category: Networking.ECP
Platforms: All
DevKey: GK948
Summary: ECP recovery of partially processed request bufs

Description:

In rare conditions, when an ECP request set is partially processed before the server is shutdown or fails, and then the server is restarted, some app-server's session might be rejected and not recovered. This change correct that situation.

Category: Networking.ECP
Platforms: All
DevKey: GK950
Summary: Fixed an ECP server pre-fetcher hang

Description:

This change fixes a rare situation where reverse $ORDER is being pre-fetched by the worker daemon while the previous block is being modified by the ECP daemon; this may cause a deadlock condition and hang the ECP dmn and possibly the system.

Category: Special Projects
Platforms: All
DevKey: CDS1995
Summary: Fix U2 crash after $ZU(11,2)

Description:

After issuing $ZU(11,2), a subsequent GOTO to an entry point with a formal parameter list could get an access violation.

Category: SQL
Platforms: All
DevKey: DPV3874
Summary: MPP: Deferred SQL, correct oref.prop referenced as host variables in the SQL statement

Description:

A problem has been corrected where a deferred SQL statement that included a host variable reference of the form oref.prop was not having the proper code generated for it.

Category: SQL.Privileges
Platforms: All
DevKey: DPV3857
Summary: SQL: Correct ODBC Catalog query SQLTablePrivileges

Description:

This change corrects a rare error that can occur when trying to fetch the privileges on a table using ODBC.

Category: System
Platforms: All
DevKey: CDS1985
Summary: Fix memory overlay

Description:

The change corrects a situation where operations that save and restore the internal symbol table used by Weblink Developer might overlay memory and cause access violations in the process.

Category: System
Platforms: All
DevKey: SAP1477
Summary: Fix database corruption following a File Compaction

Description:

This change fixes a problem where, after a FileCompaction on a 9GB file, a second FileCompaction gives a <DATABASE> error, and INTEGRIT shows a node pointer to an incorrect block.

Category: System
Platforms: All
DevKey: SAP1478
Summary: Fix job startup hung in getsym / putsym

Description:

A job command using jobservers will sometimes hang and time out. A dump analysis shows the two processes (parent and child) both waiting in the job putsym and getsym (symbol passing) code. This change prevents that deadlock situation.

Category: System
Platforms: All
DevKey: SAP1480
Summary: Fix process hangs during mailbox processing on Windows

Description:

Repeated use of $VIEW(-1, pid) causes process to hang. This is now corrected.

Category: System.Callin/Callout
Platforms: All
DevKey: SAP1464
Summary: Fix $ZF(-1) doesn't complete correctly when called from within a web method

Description:

A $ZF(-1) function that succeeds in a terminal environment hangs in a Web environment. This has been corrected.

Category: System.Cluster Specific
Platforms: OpenVMS
DevKey: SAP1479
Summary: Fix cluster recovery runs even though cluster is up on OpenVMS

Description:

This corrects a situation where a cluster recovery could take an unusually long time if run while the cluster was, in fact, operational.

Category: System.Trans. Proc.
Platforms: All
DevKey: HYY1665
Summary: Fix TROLLBACK failure at the time of jrnswitch

Description:

This change addresses an issue that could cause TROLLBACK to fail with the (false) error "journaling is disabled" in certain rare circumstance involving an ongoing journal switch.

Category: Utilities.Configuration
Platforms: All
DevKey: SML1378
Summary: Fix stale SLM mapping when DB location changed in CPF file

Description:

This change fixed a possible stale SLM mapping when the destination database location is updated in CPF file before Caché starts. This also fixed an issue with renaming the database name in configuration that does not update the database location in global/routine/package mapping.


© 2011, InterSystems Corporation. All rights reserved.