|
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\relnotes.htm
This document provides a list of the changes between Caché
2007.1.5
and Caché
2007.1.6.
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
- CSP.Gateway
- Networking.ECP
- Object.ActiveX
- Object.Class Compiler
- Object.Library
- Object.Relationships
- Object.Soap
- Security
- System
- System.Licensing
- Utilities.Routines
Category: CSP
Platforms: All
DevKey: MAK2346
Summary: Restore journal state after each CSP page
Description:
If a CSP page disabled journaling with a call to
DISABLE^%SYS.NOJRN, the CSP server was not preserving this so the
next CSP page served by this same process would be running with
journaling disabled.
This change remembers the journal state and restores it
after each CSP page.
Category: CSP
Platforms: All
DevKey: MAK2375
Summary: Make sure CSP Server and CSP Gateway agree on the Preserve state of a session
Description:
There were some unusual cases where it was possible
for the CSP Gateway and the Caché server to disagree on whether the
Preserve setting was 0 or 1.
The failure to keep
these values in sync would result in either of two conditions:
- a server process only
serving requests from one session when this was a Preserve=0 session
and so causing this server process to serve many more requests, or
-
more seriously, a server process in Preserve=1 mode getting a request
for another sessionId.
This change now
checks for any potential inconsistency in the Preserve state of the
session and makes sure the gateway is updated with the correct state
and the cookie is reset to the correct value.
Category: CSP.Gateway
Platforms: All
DevKey: CMT656
Summary: Rewrite the code responsible for responding to 'preserve' mode changes made in the Caché footer records
Description:
This change allows CSP Gateway to properly handle modifications
to "Preserve" mode. Such changes can be made
anywhere in the code responsible for
delivering the session response. Changing a session from state-less (preserve
mode 0) to state-aware (preserve mode 1) and vice versa results in
changes to the data held in the session cookie/token.
The Gateway needs to be made aware of these changes so that it
can manage its connection pool appropriately.
Category: Networking.ECP
Platforms: All
DevKey: GK619
Summary: Modified ECP server daemon not to use the job server
Description:
When ECP daemon is started by the job server, ECP
will now job a non job-server daemon, and abandon the original.
Category: Networking.ECP
Platforms: All
DevKey: GK656
Summary: Fixed the ECP requests number to wrap consistently
Description:
The ECP client and server both number their requests
to one another in circular lists. When the number reaches a limit, it
"wraps" to the beginning of the list.
The ECP client wrapped the request numbers to 1
but the ECP server wrapped it to 0. A mismatch in numbers causes a
console log entry, drop the connection, and reconnect and recover
immediately. This is an issue at sites where ECP recovery is
disabled.
This has now been corrected so the wrapping on both sides is handled
the same way.
Category: Networking.ECP
Platforms: All
DevKey: GK668
Summary: Modified the ECP server session shutdown to cleanup any queued background pre-fetching
Description:
This change modifies the ECP server shutdown to cleanup any queued
pending pre-fetch requests. If these are not cleared properly, in very rare
conditions the ECP server may receive a message while the write daemon
of that session same
is shutting down. This event leaves the background
pre-fetcher in an undefined state.
Category: Networking.ECP
Platforms: All
DevKey: GK669
Summary: Removed the journal file number/count dependency in the ECP server
Description:
To provide its guarantees, the ECP server depends on
the durability of its activities. Durability tracking was previously dependent on
the journal file number, which is not updated and tracked in parallel
with the journal offset.
This change modifies the durability logic not to depend
on the journal file number.
Category: Object.ActiveX
Platforms: All
DevKey: JCN949
Summary: Avoid Microsoft Vista bug by not calling GetUserName() inside dll init code
Description:
Caché connections were failing in random ways due to
a Microsoft bug that corrupts memory when GetUserName() is called inside
the initialiuzation code of a dll. The details of the bug are described at
http://support.microsoft.com/kb/942234.
This change alters CacheODBC.dll so it no longer calls GetUserName()
during initialization.
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.Library
Platforms: All
DevKey: MC788
Summary: Mark all methods DisplayToLogical and LogicalToDisplay as ServerOnly=0
Description:
These methods were projected by the prior CacheObject
bindings. The classes modified are:
- %Boolean
- %Char
- %Collate
- %Currency
- %Date
- %Decimal
- %Double
- %EnumString
- %FilemanDate
- %FilemanTimeStamp
- %Float
- %Integer
- %Name
- %Numeric
- %String
- %StringTimeStamp
- %Time
- %TimeStamp
- %MV.Date
Category: Object.Relationships
Platforms: All
DevKey: DLP2159
Summary: Fix %BuildIndices 2007.1 bug for index on a collection of objects
Description:
An error that caused an invalid index to be constructed
by %BuildIndices has been fixed. This affects only an index on a
collection where the collection element type is an object. The error
caused the subscript value to be a full OID form value instead of the
standard ID value.
This error is present only in preceding releases of 2007.1.
Category: Object.Soap
Platforms: All
DevKey: MXT1049
Summary: WS-Security and WS-Addressing headers always in literal format
Description:
Independent of the SoapBindingStyle for a web client
or web service, the WS-Security and WS-Addressing headers should
always be in literal format (that is, not SOAP encoded).
Because of the use of SOAP encoding, the WS-Security header for
SoapBindingStyle=encoded web client had the wrong header element name.
This change fixes that problem.
The XMLFORMAT parameter (value of literal or encoded) in a
%SOAP.Header subclass determines if the header should always be in the
specified format. If XMLFORMAT is "" or not specified, then the
header is output in the same format as the Body which is specified by
SoapBindingStyle.
Category: Security
Platforms: All
DevKey: SML1045
Summary: Fix a security hole in $INCREMENT() for cluster nodes
Description:
This changes fixes a security hole in $INCREMENT()
and $BIT() functions when a clustered database is configured to be
read-only for a user. In this instance, the user gets a
<PROTECT> error when a SET or KILL is attempted on a
global in the database, but the $INCREMENT()
or $BIT() code does not check for the error and the
operation is passed through to the server.
This only happened on the cluster slave node
side.
Category: Security
Platforms: All
DevKey: STC1423
Summary: $SYSTEM.Security.AddRoles() can no longer be called after an 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.
Important:
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 now 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 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: JO2234
Summary: Correct accvio 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é invoked the Destruct method
to clean up objects which go out of scope as part of "popping" the
internal execution stack.
This change avoids that condition.
Category: System
Platforms: All
DevKey: JO2241
Summary: Reload pointer into block after converting to exclusive ownership
Description:
This change corrects a condition where, in certain
rare conditions, database corruption could occur on an ECP Client if
the write daemon is in the process of writing a bottom pointer block
for the ECP Client cache to disk while a user job is deleting a node from
the block because the user job found a data block which is marked as
"purged from the local cache".
The symptom of this degradation is that
the indication of the space in use in the bottom pointer block will be
larger than the size of the block itself.
Category: System
Platforms: All
DevKey: RFD412
Summary: Fix terminal margin handling for VMS itanium
Description:
The 'margin' parameter of the terminal USE command
(for example, USE 0:(270) ) was handling values >255 differently on OpenVMS
Alpha and OpenVMS Itanium.
The documentation says, "Values from 1 to 255
set the right margin for output; any other value disables the right
margin", but on OpenVMS Alpha, Caché properly handled values
only up to 511. On OpenVMS
Itanium, Caché internally truncated the value to one byte,
essentially acting as a #256 on values between 255 and 512.
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, the
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: Utilities.Routines
Platforms: All
DevKey: CDS1306
Summary: Fix possible regression in %STACK <FRAMESTACK> handling
Description:
Caché had been previously modified
so it was careful to not use any more space on
the frame stack than necessary if it was processing a
<FRAMESTACK> error.
This change modifies that logic so it does not do this processing
until after if checks that a
<FRAMESTACK> error has occurred.