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
- DeepSee
- Ensemble.Adapter
- Ensemble.HL7/EDI
- Object.CacheProvider
- Object.XML
- SQL
- SQL.GateWay
- SQL.ODBC
- SQL.Privileges
- System
- System.Cluster Specific
- System.Journaling
- System.Licensing
- System.Shadowing
- Utilities
- Utilities.Configuration
Category: CSP.Gateway
Platforms: All
DevKey: ALE1821
Summary: Do not reset password in CSP.ini for external CSP Gateway on upgrade
Description:
This change stops the Windows installation so it no
longer reset passwords in the CSP Gateway for server connections in
CSP.ini for external web servers on upgrades.
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 ensures that the Gateway responds gracefully to cases
where requests for additional memory
are 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: CMT808
Summary: Ensure that the terminating CRLF is
discarded from the final output stream where response chunking is in
operation between CSPnsd and mod_csp, but a chunked response is not
expected by the client
Description:
This build will ensure that the terminating CRLF is discarded from the
final output stream where response chunking is in operation between
CSPnsd and mod_csp, in cases where a chunked response is not expected
by the client.
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.
In particular, URLs containing empty query strings after the
introducing '?' character could cause access violations in the hosting
application pool.
Category: CSP.Gateway
Platforms: All
DevKey: CMT811
Summary: Resolve an access violation that could
occur if a connection reserved for a state-aware session closed
unexpectedly
Description:
This change resolves an access violation that could occur if a
connection reserved for a state-aware session closed unexpectedly.
This error is reported in the Event Log as:
Error Condition
Exception caught in f:cspTCPIPOpenSession: c0000005|62; etc ...
In addition to this fix, the logic for testing the health of
state-aware connections has been strengthened. The periodic test will
be suppressed if there is heavy user activity against the connection
in question. If a connection reports a network error, the Gateway
will perform the full round-trip test before marking the connection as
defunct and closing its (client) side of the connection.
Category: DeepSee
Platforms: All
DevKey: DPV3594
Summary: DEEPSEE: Correction for Excel Export
Description:
This change corrects a defect that could prevent data from being
properly exported to Microsoft Excel spreadsheets.
Category: Ensemble.Adapter
Platforms: All
DevKey: TAP973
Summary: Make SQL Adapter properly drop statement handle after xDBC SP call
Description:
This change fixes an error where the statement
handle of a Stored Procedure call through the SQL Adapter is not
correctly dropped. This leads to resource leakage in the target JDBC
or ODBC driver.
Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP856
Summary: Fix bugs with VDoc BuildMap() behavior
Description:
This change fixes several systemic bugs in HL7 and
other VDoc classes, and makes the DTL compiler generate a
PokeDocType() for new target objects instead of setting DocType
directly. A new object generally is missing segments it needs to pass schema
validation so there's no point in triggering a BuildMap() on it
immediately. The DTL change arranges this.
The changes are:
- Make CopyValues() generate cloned segment objects in the target, not
just copy object references or segment ID's. This prevents a bug where
if the target object produced by a DTL is deleted without ever being
saved, it could delete the segment storage referred to by the source
object.
- Make buildRuntimeIndexFromPath() populate the "bidirectionalLink"
map. This prevents duplicate segment object allocation when retrieving
segments by path and by index.
- Fix code that was intended to clear BuildMapStatus whenever a new
segment is added or removed, but was mis-coded so that it didn't. This
could cause the segment map to fail to be re-built in the course of a
DTL when it should have been.
- Specify pKeepParsingAfterError=0 in calls to BuildMap() that are
invoked internally in the course of adding or removing segments in a
document. This should make DTL operations faster by avoiding
looping. It also means that BuildMapStatus values in the final target
object from a DTL may be less verbose than those from Validation or
HTML display of a complete message.
Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP912
Summary: Fix PokeDocType for VDoc Segment classes
Description:
This change fixes the method PokeDocType() of the
various VDoc Segment classes to be the same as DocTypeSet().
PokeDocType() is useful for Document classes to avoid the overhead of
the BuildMap() invocation that is implicit in a normal Set of the
DocType property. However, for Segment classes there is no BuildMap(),
but some helper shadow properties do need to get set.
Category: Ensemble.HL7/EDI
Platforms: All
DevKey: TAP978
Summary: Fix HL7 schema loader to allow 'Any' as
wildcard seg, prevent circular base reference loop
Description:
This change fixes two bugs in the XML HL7 schema
loader:
- Allow wildcard segment references named 'Any'.
- Do not hang the job in an infinite loop if someone saves a schema with base
referring to itself.
Category: Object.CacheProvider
Platforms: All
DevKey: JCN1092
Summary: Avoid nested lock in connection pool logic
Description:
Under extreme connection situations on multiple
threads (50+ simultanious connections), resource issues at the socket layer
cause failures which can end up causing a freeze in the connection
pooling logic, blocking all threads. The failure is machine dependent
in terms of the number of connections needed to cause this, but the
fix is the same for all platforms.
Category: Object.XML
Platforms: All
DevKey: JN857
Summary: %XML.TextReader fails to get very long CDATA value
Description:
This change corrects a situation where
%XML.TextReader fails to get very long CDATA
value. This will also apply to any character, comment or cdata.
Category: SQL
Platforms: All
DevKey: JLF305
Summary: Fix flattenExists to allow for missing mt("f",*) node
Description:
This change corrects a situation where an SQL parsing error was
reported for the case
where it expected an EXISTS
clause but none was found.
Category: SQL.GateWay
Platforms: All
DevKey: MIT872
Summary: Add explicit removal of LOBs in CreateStreamJ^%apiGTW
Description:
This change fixes a problem specific to
the Microsoft SQL
Server. Stream retrieval for multiple rows caused JVM memory to
grow. Now, we do not rely on garbage collection but instead explicitly
remove large objects.
Category: SQL.ODBC
Platforms: All
DevKey: AND1084
Summary: ODBC: Fix misplaced curly brace in Statement::Drop
Description:
This change corrects a <STORE> error caused by
a misplaced curly brace internally in the ODBC driver.
Category: SQL.Privileges
Platforms: All
DevKey: DPV3536
Summary: SQL: Correct display of some schemas in SMP when using Czech Unicode locale
Description:
A problem has been corrected where some schema names
would not display properly in the Management Portal when Czech Unicode Locale was
installed.
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: System
Platforms: All
DevKey: GK824
Summary: Process routine cache release algorithm change
Description:
This change addresses how Caché
handles the situation of having cached queries and being out of
routine buffers.
If a process attempts to allocate another routine buffer but all
system routine buffers are in-use, it will now reduce its own cached
routines down to 10% of its allowed maximum. If still no routine
buffer is available then Caché then 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
allows Caché to handle
various cleanup work to prevent possible future deadlocks
involving resource shortages.
Category: System
Platforms: All
DevKey: HYY1479
Summary: Build zlib library on Linux platforms
Description:
On Linux distributions where the zlib library
(libz.so) was not installed in the searchable path (by default or by
user's choice), one would get <DYNAMIC LIBRARY LOAD> error
running Cache compression/decompression utility (e.g.,
$System.Util.Compress() etc.). This change addressed that by including
a copy of the zlib library in the Caché installation.
Category: System
Platforms: Windows
DevKey: JO2310
Summary: Fix problem where clearing wdstop could cause a list of gaccupd waiters to be dropped
Description:
This change corrects
a rare problem on Windows systems where when the control process
resumes a system that had been suspended due to lack of write daemon
activitiy (for example, a long backup). In this
circumstance, it was possible for a small number of jobs
to be permenently left suspended.
Category: System
Platforms: Windows
DevKey: SAP1229
Summary: Fix problem with duplicate cconsole messages ending in newline
Description:
This corrects an issues where
duplicate console messages on which a newline has been supplied were not being suppressed.
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: 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.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 journal position is not tracked. But the session is
started with the current journal position, and if the slave did not stay
idle for more than 60 seconds (time enough for it to clear the old
journal position), it
prevented purging the old journal files.
This is now handled correctly.
Category: System.Cluster Specific
Platforms: All
DevKey: JO2314
Summary: Corrections for recovery of cluster mounted encrypted databases
Description:
A problem affecting OpenVMS Clusters and cluster mounted
encrypted databases has been resolved which would have resulted in
database degradation if blocks from an encrypted database were
recovered from the pij during cluster failover or during cluster
recovery at startup.
This change is compatible with the existing cluster code so that a
running cluster can be upgraded one node at a time without shutting
down the entire cluster. However, it is crucial that encrypted
databases must not not be cluster mounted until ALL of clustered
instances (for that Caché cluster) have been updated to this version.
CAUTION: A mistake in upgrading the cluster may damage cluster-mounted encrypted databases
during the next cluster failover/recovery.
Category: System.Cluster Specific
Platforms: All
DevKey: JO2316
Summary: Add missing interlocks for reading pij label into gcommon buffer
Description:
This correction resolves a
rare problem during cluster recovery after the
cluster master shuts down or fails. This defect prevents subsequent attempts
to join the cluster. The problem can occur any
time the master leaves the cluster, gracefully or not and required
restarting all of the cluster nodes to resolve it.
Category: System.Journaling
Platforms: All
DevKey: HYY1544
Summary: Cluster journal restore
Description:
This change corrects an error that could occur during a
journal restore of an ECP cluster. Under some circumstances,
the last journal records in the restore would not be posted to the
database because of an error in waiting for all the records to be
written
to disk.
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: RJW1798
Summary: ODBC connection consumes a license with web add-on
Description:
This change corrects a situation that would cause
anonymous ODBC connections originating from a Windows terminal server
session to incorrectly consume a license unit when a Web Add-on
license is used.
Category: System.Shadowing
Platforms: All
DevKey: HYY1517
Summary: Prevent cluster shadow with filter from applying an update twice
Description:
This corrects an issue that caused cluster shadows
with a
filter to apply an update twice in a row. This unnecessarily inflated
the journal files on the shadow side and degraded shadowing
performance. It did not affect data integrity, however, as the
duplicate followed the original record immediately.
Category: System.Shadowing
Platforms: All
DevKey: HYY1532
Summary: Address a case of shadow corruption/hanging when journaling is restarted on the source side
Description:
This corrects a defect that could cause a shadow to
create a corrupted copy of source journal file and hang in certain
circumstances involving stopping and starting journaling on the source
side.
Category: Utilities
Platforms: All
DevKey: SML1197
Summary: Fix %SYS.Namespaces.GetGlobalDest() with single level subscript
Description:
A previous change caused %SYS.Namespaces.GetGlobalDest()
to fail if a single-level subscript was used as the third argument,
and it was not enclosed in quotes. This change restores the previous
capability.
Category: Utilities.Configuration
Platforms: All
DevKey: STC1751
Summary: Do not validate collation of globals during system startup
Description:
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.
Futhermore, it only checks the collation of the physical global when the
mapping entered is a subscript-level mapping.
Category: Utilities.Configuration
Platforms: All
DevKey: STC1755
Summary: Changing CPF parameter locksiz should not require a restart
Description:
The "locksiz" entry in the CPF file contains the
size (in bytes) of memory allocated for locks. The startup activity rounds up
the value to the next multiple of 64 kilobytes. The default is 1,179,648
bytes.
On the HP platform, the default is four times the usual
default or 4,718,592 bytes.
The range is 65536 bytes up
to the gmheap size. If a system needs more room for the lock table, increase
the gmheap parameter as well.
The change takes effect immediately without the need for a restart.
Category: Utilities.Configuration
Platforms: All
DevKey: STC1759
Summary: Entering a null password using LDAP will no longer authenticate the user
Description:
When using LDAP for user authentication, if a user
entered a username, with a null password, they would always be
authenticated and allowed into the system. This is because the
operating system LDAP libraries treat this as an "anonymous" bind, and
uses the LDAP simple_bind_s function to succeed with a null
password.
With this change, Caché tests to see if a null password has been entered, and
reject the attempt.
This is a problem only on the following client to server connections:
- Unix or OpenVMS client to any LDAP server
- Windows client to non active directory LDAP
server
It is not a problem on a Windows client to a Windows Active Directory
LDAP server connection.