|
|
|
InterSystems Documentation
|
|
Caché 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 file: \relnotes\cache\prenotes.htm
This document provides a list of the changes between Caché
2008.1.1
and Caché
2008.1.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 command in each
namespace where application classes reside:
Do $system.OBJ.UpgradeAll("c")
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.
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 evaulating 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
- Installation.Windows
- Networking.ECP
- Object.Class Compiler
- Object.Macro Preprocessor
- Object.XML
- Security
- System
- System.Licensing
- System.NWDS
- Utilities
Category: CSP
Platforms: All
DevKey: MAK2346
Summary: Restore journal state after each CSP page
Description:
If a CSP page disabled journalling with a call to DISABLE^%SYS.NOJRN,
then the CSP server was not resetting this; hence, the next CSP page served
by this same process would be running with journalling disabled. Now, the journal state
is noted and restored after each CSP page.
Category: CSP
Platforms: All
DevKey: MAK2374
Summary: Restore check inside CSP link rewriting if the link is a javascript link
Description:
When you call ..Link(url) from a CSP application, it
rewrites the url to add things such as the sessionId, if it is
required. The code also checks for 'javascript:' at the start of the
link and skips rewriting these because they are not real links but
commands to execute some javascript code. The code to avoid doing this
was erroneously
removed by preceding development activity and this change
restores it.
Category: Installation.Windows
Platforms: Windows
DevKey: ALE1460
Summary: Read and execute cbootuser.rsa on Windows Vista and above
Description:
Windows installation on Vista and above will read and execute
cbootuser.rsa the same way it does on XP. This allows for an uninterrupted installation process.
Category: Networking.ECP
Platforms: All
DevKey: GK632
Summary: Fixed gref translation when the remote DB collation is different
Description:
Implied grefs (global references) across ECP, or mapped globals across ECP,
or the first reference to any global across ECP
did not translate the gref to the remote collation consistently.
This has been corrected.
Category: Networking.ECP
Platforms: All
DevKey: GK652
Summary: ECP hang on ECP server recovery during long string set
Description:
In very rare conditions, ECP recovery may hang if
there is an ECP server or network outage during a long string
(i.e. > 32K characters) SET.
Category: Networking.ECP
Platforms: All
DevKey: GK653
Summary: Fixed a cstat access violation
Description:
This corrects a rare situation where an ECP reply buffer
may reference a a null pidtab entry.
Category: Networking.ECP
Platforms: All
DevKey: GK654
Summary: Adjusted the ECP client heartbeat interval
Description:
This change adjusts the ECP application server
heartbeat interval to detect an idle system network outage more
accurately. A large number of async packets originated by the
database server may prevent it from sending heartbeats. Decreased the
app-server heartbeat interval to keep the db-server pending heartbeat
count more accurate.
Category: Networking.ECP
Platforms: All
DevKey: GK656
Summary: Fixed the ECP requests number to wrap consistently.
Description:
When the request number counter overflowed,
the ECP client wrapped the request numbers to one
but the server wrapped it to zero. Unexpected wrapping could cause a
console log entry, drop the connection, and reconnect and recover
immediately. It is an issue at sites where ECP recovery is
disabled and has been fixed to be consistent in client and server.
Category: Networking.ECP
Platforms: All
DevKey: GK659
Summary: ECP client recovery to update remote DB sfn.
Description:
In a very rare condition during the ECP server recovery window, if the database server failed
and if the remote databases were not mounted in the same order as at startup,
then ECP synchronous requests (that is, $DATA, $GET, $INCREMENT) that were being formulated
at the time of the database server failure might have referred to the incorrect database number.
This has been corrected.
Consequences of an incorrect database number vary (in part depending on the Caché release):
the ECP daemon may crash or the request may not be directed to the correct database. In the latter case,
unexpected application errors may result or (in rarer cases) incorrect data may be fetched.
Category: Networking.ECP
Platforms: All
DevKey: TR995
Summary: Long string set across ECP may leave the ECP client cache out of date
Description:
Prior to this fix, if a string in excess of approximately 64KB
were modified by the application server while the block which will
contain the string was being sent to the same client as a consequence
of an earlier request, the app server and database server would end up
with different versions of that block.
Category: Object.Class Compiler
Platforms: All
DevKey: MAK2391
Summary: Fix typo in %occConvert
Description:
%occConvert could get an UNDEFINED error when upgrading a class dictionary version in a database.
This has been corrected.
Category: Object.Macro Preprocessor
Platforms: All
DevKey: DPV3110
Summary: MPP: Fix infinite loop when there is expansion of recursive macros
Description:
A problem in the macro preprocessor has been corrected
where the compiler would go into an infinite loop
if expansion of a macro reference was a recursive loop. The following
are examples of such recursion:
#define ABC $$$ABC
$$$ABC
or
#define ABC $$$DEF
#define DEF $$$ABC
set j=$$$ABC
If you attempt to compile such code, you will now get an error such as:
ERROR: MyRoutine.MAC(14) : MPP5649 : Too many (65535) macros referenced on this line.
This might indicate recursion in the macro definitions.
Category: Object.XML
Platforms: All
DevKey: JN675
Summary: Fix incorrect string length calculation in %XML.SAX.Utils.Sequencer
Description:
Fix incorrect string length calculation in %XML.SAX.Utils.Sequencer.
Category: Security
Platforms: OpenVMS
DevKey: RJW1569
Summary: Fix problem accepting Kerberos connection on OpenVMS
Description:
This changes corrects a problem that prevented
Caché Unicode system from accepting a Kerberos connection on
OpenVMS platforms.
Category: Security
Platforms: All
DevKey: SML1045
Summary: Fix a security hole in $Incr() for cluster nodes.
Description:
This change closes a security hole in the $INCREMENT()
and $BIT() functions. When a clustered database is configured to be
read-only for a user, it gets <PROTECT> error when a SET or KILL
is attempted on the database. However, $INCREMENT did not trigger the error,
though it should have, and the increment occurred in the
database. This only happened on the cluster slave node side.
Category: Security
Platforms: All
DevKey: STC1423
Summary: $SYSTEM.Security.AddRoles() cannot be called after unhandled error
Description:
$SYSTEM.Security.AddRoles has been updated so that
- if you have a routine which calls
$SYSTEM.Security.AddRoles(), and
- you
encounter an unhandled COS error in this routine while in programmer
mode, and
- the routine breaks at the debug prompt,
you can no longer
Call $SYSTEM.Security.AddRoles() from the debug prompt and escalate
your roles outside of the scope of the application.
It is recommended that any routine or class use error handling in the
procedures which call $system.Security.AddRoles().
Category: Security
Platforms: All
DevKey: STC1430
Summary: $SYSTEM.Security.AddRoles() can be called from User defined "Z" functions
Description:
This change also allows $SYSTEM.Security.AddRoles() to be called from
user defined "Z" functions. These functions are user defined
extensions to the COS language which allow commands, functions, and
special variables starting with "Z" to be added to the language.
Category: System
Platforms: All
DevKey: CDS1385
Summary: Fix <UNDEFINED> in DisableJournaling method
Description:
Trying to run the DisableJournaling method of the SYS.Database class would
result in an <UNDEFINED> error. This has been corrected.
Category: System
Platforms: All
DevKey: CDS1395
Summary: Long strings were not correctly returned from $SYSTEM functions
Description:
This change corrects an issue where a function such
as $SYSTEM.Encryption.Base64Decode, when it returned a long string,
could cause a memory access violation.
Category: System
Platforms: All
DevKey: CDS1396
Summary: Prevent buffer overrun with encryption functions
Description:
When the output of Base64Decode was longer than 32K characters, the
length of an internal buffer was sometimes erroneously calculated
leading to a potential buffer overrun.
Category: System
Platforms: All
DevKey: CDS1408
Summary: Fix access violation after <STORE> error
Description:
In some situations when running an error trap after
a <STORE> error, the trap routine was not loaded correctly,
resulting in a memory access violation. This has been corrected.
Category: System
Platforms: All
DevKey: CDS1409
Summary: Fix loop or access violation after exclusive NEW when partition is full
Description:
When there is a small amount of memory available in
the partition, and an exclusive NEW command is issued, there is a
possibility for the memory queue to become corrupt. This resulted in a
cpu loop or an access violation at some later point. This
vulnerability has been corrected.
Category: System
Platforms: All
DevKey: JO2231
Summary: Corrections in x64 AL code to retrieve top argstack entry after COM2
Description:
This change corrects a source of occasional
crashes by Caché by fixing deviations from the stack discipline.
Category: System
Platforms: Windows
DevKey: JO2233
Summary: Disable LTCG for 64-bit Windows x86 builds
Description:
A problem has been resolved on 64-bit Windows
machines where loading a large number of XML files sometimes caused an
exception resulting in the closure of the terminal window.
Category: System
Platforms: All
DevKey: JO2234
Summary: Correct access violation due to calling object Destruct methods as part of popping the execution stack
Description:
In certain situations QUIT, ZQUIT and HALT commands
could get exceptions triggered when Caché attempted
to clean up objects which go out of scope as part of "popping" the
internal execution stack. This is now fixed.
Category: System
Platforms: OpenVMS
DevKey: SML1036
Summary: On OpenVMS, fix a loop condition when a job is terminated abnormally while writing to principal device
Description:
On OpenVMS, this change fixes a looping conditionthat could occur when
a job was terminated abnormally while writing to principal device.
Category: System.Licensing
Platforms: All
DevKey: RJW1576
Summary: License server can enter infinite loop and write enormous license report file.
Description:
Under some rare circumstances,
license server could create a circular linked list of licenses.
When this happened, the license server would loop attempting to process the list,
or it would attempt to write an infinitely large license report file.
This
change mitigates these problems from occurring by counting the
elements processed and causing the license server to exit if the
number exceeds the maximum possible number of structures. The license
server will be restarted automatically if this should occur. User
login and logout proceed without interruption during this period.
The license server restart will rebuild the list properly.
Category: System.NWDS
Platforms: All
DevKey: SML1037
Summary: Fix configuration re-activation took a long time in NWDS master
Description:
When NWDS is configured, the configuration re-activation could take a long time at master node and
caused the SMP to timed out. This has been addressed.
Category: Utilities
Platforms: All
DevKey: STC1301
Summary: Improve performance of ZN command
Description:
Previously, the ZN command executed an excessive number of ObjectScript lines while switching namespaces.
This could cause a severe performance penalty to applications which used the ZN command to switch namespaces
within the application. This has been fixed.
Category: Utilities
Platforms: All
DevKey: STC1377
Summary: Fix password validate error on user import, Delete users faster
Description:
If there was an attempt to import a user into a new instance of Caché
from another using ^SECURITY, and the user existed on both instances,
and had a different password on each instance, then the password
on the new instance would fail validation. Now, the user is deleted
from the new system before the record is imported. This has the added effect
of removing all the SQL table privileges for the new user (previously
the user on the new instance inherited the table privileges from the user on the other instance).
There have also been performance enhancements.
Category: Utilities
Platforms: All
DevKey: STC1407
Summary: ZN command now works if in implied namespace with no mappings
Description:
Previously, if a process executed a $ZU(5,namespace) command to an implied namespace,
the routine to test for the protect error was unavailable, so ZN could not be used to get back —
though $ZU(5,namespace) could be used. The fix is to explicitly call the check routine
with a namespace reference so it can be executed.