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.
-
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
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.
-
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 routine 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:
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:
- 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.HL7/EDI
- Installation.Windows
- Languages.COS
- Object
- Object.Class Compiler
- Object.DotNet
- SQL.GateWay
- SQL.Privileges
- Studio
- System
- System.Backup/Restore
- System.Cluster Specific
- System.I/O
- System.Journaling
- System.Licensing
- System.Monitoring
- Utilities.Configuration
- Zen
Category: CSP.Gateway
Platforms: All
DevKey: CMT776
Summary: Ensure that the values assigned to configuration parameters in CSP.ini are always expressed in 7-bit ASCII range
Description:
This change ensures that the values assigned to
configuration parameters in CSP.ini are always expressed in
7-bit ASCII range. It has always been the convention that text held
in the Gateway configuration file should be in English, even
though the corresponding text in the Management forms may be localized
in some other language. Recent changes had resulted in this
discipline not always being followed.
Category: CSP.Gateway
Platforms: All
DevKey: CMT779
Summary: Ensure that the Gateway responds gracefully to cases where access to further memory is denied by the operating system (particularly when buffering large amounts of response data)
Description:
This change makes the Gateway respond
gracefully to cases where access to further memory is denied by the
operating system. This scenario occurs particularly when buffering
huge amounts of response data in order to generate a HTTP
content-length header field. Previous versions did not always handle
this event cleanly, and an access violation followed by memory leakage
could occur.
Category: CSP.Gateway
Platforms: All
DevKey: CMT809
Summary: Protect against a problem in the IIS v7 Native Modules interface that could cause a memory access violation to occur if an invalid query string was submitted
Description:
This change protects against a problem in the IIS v7
Native Modules interface that could cause a memory access violation to
occur if an invalid query string was submitted.
Category: CSP.Gateway
Platforms: All
DevKey: CMT820
Summary: Automatically correct the session status information in the Gateway connection table where state changes are made in the form footers and, as a result, are not projected through to the form content
Description:
This change automatically corrects the session
status information in the Gateway connection table where state-changes
are made in the form footers and, as a result, are not projected
through to the form content. This problem only affects applications
that are configured to not use cookies to project the session token.
Category: CSP.Gateway
Platforms: All
DevKey: CMT833
Summary: Fix a mis-routing issue with state-aware applications
Description:
This correction fixes a mis-routing issue with
state-aware applications. This fault would be provoked by the following chain of events:
- A request from browser A is assigned to Cache process X and marks
the session as state-aware (sets Preserve=1).
- Browser A then issues a new request which terminates the
state-aware session (by calling EndSession()). This action sets
Preserve=0 and ends the session on the server. However, browser A
still has a session cookie marked as state-aware.
- Browser B issues a request which is assigned to
Cache process X (since this has been returned to the pool of
state-less connections) and marks the session as state-aware.
- Finally, browser A (which was left open) issues a
request which is erroneously routed to Cache process X (which is now
exclusively owned by browser B). Cache responds to this security
violation by halting process X.
Under these conditions, the Gateway then records the
following error in its event log:
===
Error Condition
CSP application closed the connection before sending a complete response
===
with the end results that the request from browser A fails and browser
B is unable to continue.
Category: CSP.Gateway
Platforms: All
DevKey: CMT839
Summary: Protect against a potential memory violation in the function responsible for reading data block headers from Cache
Description:
This modification protects against a potential
memory violation in the function responsible for reading data block
headers from Cache.
Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP1002
Summary: Enable setting HL7 segments by path where path contains 'Any', 'Zxx' or 'Hxx'
Description:
This change allows setting a segment into an HL7 message by path where the path
uses a wildcard. Formerly, an error would result because the name of the segment
being set did not exactly match the DocType name corresponding to the path-
specified segment position. It could not match because of the wildcard segment
name. Supported wildcard segment names are 'Any', 'Zxx' or 'Hxx'.
Category: Installation.Windows
Platforms: All
DevKey: ALE1898
Summary: Preserve Windows service credentials on upgrade
Description:
This change makes sure the Windows service will not
be deleted when running uninstall sequence on upgrade.
Note:
This change must exist in the version being upgraded to have
any effect.
Category: Languages.COS
Platforms: All
DevKey: CDS1702
Summary: Fix two-argument $DATA and 3-argument $ORDER/$QUERY in indirection
Description:
A problem has been fixed that could lead to an invalid name in the global
directory. The specific case is using indirection for the global name with
the same local variable that is also set in a subscript expression using
$DATA, $ORDER, or $QUERY. For example,
SET ^X(3)=4, n="^MyGlobal", @n@($DATA(^X(3),n))="data"
Category: Object
Platforms: All
DevKey: MAK2861
Summary: %Dictionary.CompiledClass:%ExistsId method was returning true for a class that exists but is not compiled
Description:
This changes corrects a problem where the
%Dictionary.CompiledClass:%ExistsId method
would return true for a class
that exists but is not compiled yet.
Category: Object
Platforms: All
DevKey: MC1088
Summary: Better management of class reloading
Description:
This changes corrects a problem where a stale
version of a class could be used when connecting to a version of
Caché
2008.2 or older. Now the class is always refreshed for thse versions.
Category: Object.Class Compiler
Platforms: All
DevKey: MAK2864
Summary: Fix detection of 'Quit (1)' to return '1' rather than '-1'
Description:
This change corrects a situation where a class method that exited with
could end up returning the value -1 instead.
Category: Object.Class Compiler
Platforms: All
DevKey: MAK2869, MAK2874
Summary: Do not normalize ##class or ##super when precompiling an INC file
Description:
If you have a macro definition like this inside an INC file:
#define createNewInstanceExt(%ClassName) ##class(%ClassName).%New()
the the macro compiler attempted to normalize the ##class
classname in the precompiled information associated with this INC
file.
However, this is context-sensitive and in this class '%ClassName'
is just the argument to the macro as well so it is not valid to expand
this inside an INC file.
Caché now detects this and avoids expanding this
until an application invokes this
macro.
Category: Object.Class Compiler
Platforms: All
DevKey: MAK2870
Summary: Do not use system implemented method when multiple arguments
Description:
This change corrects a situation where
a method that just returns the value of one of its arguments could get
a <PARAMETER> error when there were two arguments to the method.
Category: Object.Class Compiler
Platforms: All
DevKey: MAK2885
Summary: Method with codemode=call could call superclass when subclass had different implementation
Description:
This change corrects a problem with method
overriding. Suppose an application defined a method, X(), in a superclass, and another
method, Y(), that was marked as "codemode=call", and method Y
just calls method X.
If the application was changed so that a subclass
overrode method, X, the class compiler was
not detecting this and calling the wrong method.
It now properly invokes the overriding method.
Category: Object.DotNet
Platforms: All
DevKey: IYB644
Summary: CacheProvider, exclude calculated properties from meta information internal dictionary
Description:
This change fixes an error in the validation of meta
information when a class has more than one calculated property that
could result in an application crash.
Category: SQL.GateWay
Platforms: All
DevKey: MIT972
Summary: Clean some variables in JDBC linked table queries
Description:
This change corrects a memory leak in the JDBC gateway.
Category: SQL.Privileges
Platforms: All
DevKey: DPV3580
Summary: SQL Privileges: Correct issue compiling a view when view owner has select privileges on the view queries columns via a role
Description:
A problem has been corrected where a view would not
compile even when the owner of the view has all the necessary
privileges on the view query's table(s) granted to the owner via a
role.
Category: Studio
Platforms: All
DevKey: DVU2700
Summary: Initialize Source Control for secondary thread connection
Description:
This corrects a problem where class compilation had
been moved to a
secondary thread, but the source control informtaion for that thread
had not been initialized.
Category: System
Platforms: All
DevKey: GK824
Summary: Process routine cache release algorithm change
Description:
This change modifies the release for cached routines
to be more aggressive when the system is out of routine buffers.
If a process
attempts to allocate another routine buf but all system routine buffers
are in-use, the algorithm reduces its own cached routines up to max
allowed - 10%. If still no routine buffer is available, then it drops
the system wide number of routines cached per process.
Category: System
Platforms: All
DevKey: GK825
Summary: Modified job creation to check and do some house cleaning when waiting for a job to start
Description:
While waiting for a job to start, this change alters
Caché to handle various cleanup work to prevent
possible deadlock, for example, to release some routine buffers for the child
process to use.
Category: System
Platforms: All
DevKey: GK835
Summary: Fixed sub-class loader error recovery
Description:
In a rare condition, if the superclass fails to
load because the database is unexpectedly not reachable, it may leave that
superclass in a partially loaded state. This blocks loading any derived
classes of that same superclass. (They end up waiting forever for
the superclass to load).
This has now been corrected.
Category: System
Platforms: All
DevKey: SAP1282
Summary: Use /tmp on cache.ids shared memory object to insure invisible to other nodes
Description:
In cases where CacheIDS<device #>.<inode
#> has same value on both nodes accessing a shared disk, confusion can
arise. One symptom of this was false status messages being sent which
caused the partner node to crash.
Category: System
Platforms: All
DevKey: SAP1283
Summary: Harden startup against "impossible" conditions
Description:
This change
hardens startup of an instance on a cluster node when the instance is already running on another node.
Category: System
Platforms: All
DevKey: SAP1289
Summary: Windows message hang when target terminates
Description:
A message transmission that requires a reply (such
as JOBEXAM) may hang forever if the target of the message exits after
receiving the message but before responding to the request. This has
now been fixed.
Category: System
Platforms: All
DevKey: SAP1312
Summary: MONITOR fails to email on journal failure and FreezeOnError=1
Description:
This correction addresses a situation where, if the
system fails on journal error and FreezeOnError is set, MONITOR does
not report the error via email.
Category: System
Platforms: All
DevKey: SAP1317
Summary: $ZUTIL(110) returns null even though system has valid nodename
Description:
This correction fixes a situation where this
function returns null even though the underlying operating system
services return the actual system name.
Category: System
Platforms: All
DevKey: SML1175
Summary: Clean up dead job's resource before clean up stuffs
Description:
This change fixes a situation where the cleanup
daemon might failed to clean up a dead job if its resource is used by
the cleanup daemon.
Category: System
Platforms: All
DevKey: SML1208
Summary: Fix job server crash on JRNSWITCH
Description:
This changes corrects an error where, when a job
server process was started to perform a database backup it could get
access violation.
Category: System.Backup/Restore
Platforms: All
DevKey: STC1793
Summary: Increase MaxServerConn if JoinCluster=1
Description:
When the parameter JoinCluster was set
to 1 in the CPF file, Caché would increase the parameter MaxServerConn to
14 so other cluster members would be able to connect. This change
restores that behavior; it had been removed in version 2009.1,
Category: System.Cluster Specific
Platforms: All
DevKey: GK827
Summary: Modified Cluster session not to track jrn position
Description:
The inter-cluster ECP session activity is not a
regular session, and the journal position is not tracked. This
change corrects a situation where if the slave didn't stay
idle for > 60 seconds (enough time to clear the old journal position), it
prevented purging the old journal files.
Category: System.I/O
Platforms: All
DevKey: SAP1309
Summary: Return NOTIMPLEMENTED in FileCompact on 10.1
Description:
The ^DATABASE routine gives an option for File Compaction.
This change disables the feature in 2010.1.
Category: System.Journaling
Platforms: All
DevKey: HYY1555
Summary: Fix a case of incorrect wij journal info
Description:
This change addresses an issue that could cause, among other problems,
journal recovery to fail at Cache startup with a <VALUE OUT
OF RANGE> error. In general, the more
frequent the journal switches, the more likely this error would occur.
Category: System.Journaling
Platforms: All
DevKey: SML1203
Summary: Handle Bitset rollback when a new global was created
Description:
This change fixed a transaction rollback problem
when there are BITSET and Global SET journal records on the same global
node. Under some circumstances, the SET journal record might not be
rolled back
when it should be.
Category: System.Licensing
Platforms: All
DevKey: RJW1804
Summary: $System.License.Login can produce incorrect license id in jobbed process
Description:
This change corrects an error that could insert
trailing null characters into the license identifier of a jobbed
process that called $SYSTEM.License.Login() if it's parent had also
called $SYSTEM.License.Login().
Category: System.Licensing
Platforms: All
DevKey: RJW1809
Summary: License Id is incorrect for processes jobbed from a CSP page
Description:
Beginning in Cache 2010.1, a process started by the
job command from a CSP page when a user is logged in does not have the
correct license Id. Its license Id is the user name instead of
username@clientIPaddress. Consequently, it does not share a license
unit with the CSP session. This problem does not occur with anonymous
CSP connections. This change corrects the problem.
Category: System.Licensing
Platforms: All
DevKey: RJW1819
Summary: License units for CSP sessions may not be released after timeout+grace period
Description:
This corrects a problem where, under some rare
circumstances, expired CSP sessions may remain in the license "grace
period" longer than the expected 5 minutes. This occurs only for
Single Server license keys if the interval between the expiration of a
single page CSP session and the next license login exceeds 17
minutes.
Category: System.Monitoring
Platforms: All
DevKey: RFD508
Summary: Better handling of stats unmapping for dead jobs
Description:
This changes corrects a situation where cleanup algorithms for
processing dead jobs
did not properly update the system monitoring counters and statstics.
Category: Utilities.Configuration
Platforms: All
DevKey: STC1751
Summary: Do not validate collation of globals during system startup
Description:
In previously releases, when a new global subscript-level mapping was
detected at startup, Caché validated that the collation of the
physical global in the database matched the collation, if the global
was populated with data. If the collation did not match, Caché
reported an error, and did not save the global SLM mapping.
If the configuration file
was edited by hand, this could cause problems at startup when
Caché attempted to mount the database.
This has been changed so that
Caché only checks the collation when it is entered
via the Management Portal.
Furthermore, it only checks the collation of the physical global when the
mapping entered is a subscript-level mapping.
Category: Zen
Platforms: All
DevKey: DAD013
Summary: Corrects a bug where zenThreadId values were based on server $JOB values instead of logical threads
Description:
This corrects a design shortcoming where zenThreadId
values were based on server $JOB values instead of logical threads.
If two independent events cause conflicting DOM
updates, then the user may be presented with an inconsistent user interface. The $JOB value on the
server does not guarantee that threads will not be processed out of order and can lead to false thread
assertion problems depending on how requests are processed.
This change uses a unique value generated on the client browser to identify logical threads instead of
using the $JOB value from the server.