|
|
|
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:
- Routines
Unless specified in the upgrade notes for a specific release, routines
are upward-compatible and do not need to be recompiled. However,
customers may decide to recompile them to take advantage of new
features, improvements in generated code and the corresponding
efficiencies in runtime support.
- Classes, SQL, Projections, Proxy Classes
InterSystems requires that all classes be recompiled after an
upgrade. This is accomplished by running the following commands in each
namespace where application classes reside:
Do $SYSTEM.OBJ.UpgradeAll()
Do $SYSTEM.OBJ.CompileAll("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 documentation.
-
Exported XML
Unless 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.
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 database
servers and application servers, InterSystems recommends that the
application servers be stateless and independent.
- A server is stateless when it treats each
request as an independent transaction that is unrelated to any prior
or future request. It does not need to preserve data for use in a
later transaction or worry about freeing it if a client dies in
mid-transaction.
- A server is independent when it does not
depend on the internal state of another application
server.
Assuming that these conditions are met, 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.
-
Debugging
InterSystems also recommends recompiling routines and classes for
applications under development. This synchronizes the debugger with
the expected format of the compiled code.
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:
- Title to and ownership of the software and documentation shall
remain with the Contractor.
- Use of the software and documentation shall be limited to the
facility for which it is acquired.
- 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.
- 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
- CSP.Gateway
- Ensemble
- Ensemble.Adapter
- Ensemble.HL7/EDI
- Ensemble.ManagementPortal
- Installation.Windows
- Languages
- Languages.COS
- Networking.ECP
- Object.ActiveX
- Object.C++
- Object.Java
- Object.LanguageBindings.Light C++ Binding
- Object.Library
- Object.XML
- Security
- SQL.DDL
- SQL.GateWay
- SQL.ODBC
- Studio
- System
- System.Backup/Restore
- System.Journaling
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.