-
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 routines 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
- Ensemble
- Ensemble.Adapter
- Ensemble.BPL
- Ensemble.JavaGateway
- Ensemble.ManagementPortal
- Ensemble.RulesEngine
- Languages.COS
- Networking.ECP
- Object
- Object.Gateway
- Object.Library
- Object.Storage.Default
- SQL.ODBC
- SQL.Statement
- Studio
- System
- System.Journaling
- System.Shadowing
- System.Trans. Proc.
Category: Ensemble
Platforms: All
DevKey: DDP416
Summary: Make Message Bank client more robust after timeouts
Description:
In situations where a TCP timeout was encountered by
the Message Bank client code, it was possible for the Message Bank
server to respond (albeit in a delayed fashion) to each submission
sent from the client. The client code was not handling this
possibility, and would run into issues due to the extra responses
being returned from the server. With this change, the client can handle
such responses and ignore those that have already been processed.
Furthermore, the code was not thread-safe whenever a retry was
required -- after the first attempt the client code would release the
lock preventing other processes from attempting modifications on the
current header. This has also been corrected.
Category: Ensemble
Platforms: All
DevKey: DDP418
Summary: Performance and reliability improvements to Ens.Alarm
Description:
This change modifies the internal structures used by
the Ens.Alarm component to improve the performance of the component in
situations where large numbers of AlarmRequests need to be
processed. (The process now uses the ^||ISC.Ens.Alarm
process-private global to avoid memory issues on very busy systems.)
In addition, the behaviour has been improved to ensure that all
AlarmRequests survive production shutdowns when the Ens.Alarm pool
size is greater than 1.
Category: Ensemble
Platforms: All
DevKey: JN979
Summary: Prevent Data Corruption When Invalid Value Is Stored Into DICOM Document
Description:
This change corrects a problem where data inserted
into a DICOM document which fails validation can be
corrupted.
Category: Ensemble.Adapter
Platforms: All
DevKey: TAP1239
Summary: Fix error logic for FTP Inbound disk write errors
Description:
This change fixes an <UNDEFINED> *tSC1 in
EnsLib.FTP.InboundAdapter:retrieveFile() that occurs if
%Net.FtpSession:Retrieve() returns an error.
This change also makes EnsLib.FTP.Common:disconnectOnNetErr() ignore
<WRITE> errors that come from a File Stream rather than from the
FTP/TCP connection.
Category: Ensemble.Adapter
Platforms: All
DevKey: TAP1242
Summary: In FTP Outbound Adapter, wrap %IO stream in %Library stream
Description:
This change makes the FTP Outbound Adapter
PutStream() and GetStream() methods wrap supplied arguments in a
%IO.LibraryStream wrapper if they are %IO stream objects. This allows
the %Net.FtpSession object to handle them with full error checking
even though it is not aware of %IO stream signatures.
Category: Ensemble.Adapter
Platforms: All
DevKey: TAP1249
Summary: Use Process Private Global for chunks in WriteCountedStream() method
Description:
This change allows the Ensemble TCP "Counted"
adapters to write very large streams without the risk of exhausting
process memory.
Category: Ensemble.Adapter
Platforms: All
DevKey: TAP1267
Summary: Remove unused MsgBank LastId queries and response values
Description:
This change removes the computation and inclusion of
LastId values for messages and events in the returned response XML
from the Message Bank TCP Service when new messages and events are
banked. Because of the way Id's are constructed in the message bank
with the node Id prepended, there is no use to the concept of a "last"
id. Each client effectively has its own range of IDs.
Category: Ensemble.BPL
Platforms: All
DevKey: TAP1241
Summary: Don't suspend messages with priority SimSync when shutting down
Description:
This change fixes a flaw where, upon restarting,
synchronous BPL messages and responses to them are not restored
because they were suspended during shutdown. Thus, a BP that ought to
resume without problems is instead dependent on manual intervention to
resubmit the suspended messages it's waiting for so it can resume
operation.
Category: Ensemble.JavaGateway
Platforms: All
DevKey: AND1178
Summary: JavaGateway: Add socket.close() to thread error exit code
Description:
This corrects an issue where the Ensemble keepalive processing created
a separate socket for each keepalive request. Each thread now reuses
the same socket.
Category: Ensemble.JavaGateway
Platforms: All
DevKey: HCR249
Summary: Remove debug command from %Net.Remote.Gateway
Description:
This change remove an extraneous debug command from
the normal Gateway code path.
Category: Ensemble.ManagementPortal
Platforms: All
DevKey: DDP106
Summary: Fix SVG Height Calculation in Message Trace
Description:
When a large number of messages are included in a
trace, the SVG display will now adjust for the number of items present
rather than the number of items returned by the query as a whole.
This would cause an overly tall SVG display in most cases, and could
cause a white display on Internet Explorer if there were enough
messages in the trace.
The height is now correctly calculated.
Category: Ensemble.RulesEngine
Platforms: All
DevKey: MC1169
Summary: Normalize TimeExecuted in its InitialExpression
Description:
SQL assumes the InitialExpression is normalized, and
its value goes into the index unchanged. However, on delete, the
storage value must be normalized (StorageToLogical) before being used in an
index. This change assures that this happens.
Category: Languages.COS
Platforms: All
DevKey: JO2461
Summary: CORRECT JOB command problem passing TCP devices in conjunction with certain amount of other data
Description:
A rare problem which could cause the JOB command to
fail while passing an open socket to the child process has been
corrected. This generally only occurred when also passing the symbol
table or a large amount of argument data, however, neither of these
would guarantee the JOB command would run into trouble.
Category: Networking.ECP
Platforms: All
DevKey: GK957
Summary: ECP recovery to ignore dismounted remote DBs
Description:
ECP recovery may fail or cause an unexpected failure
if one of the remote DBs is dismounted. During recovery, it may remount
again. The side effects are: access vio during ECP recovery (a rare
event). This is now fixed by ignoring dismounted remote databases.
Category: Networking.ECP
Platforms: All
DevKey: GK959
Summary: ECP recovery may drop some partially processed requests
Description:
In very rare cases, when the network and the host
service is very fast, ECP recovery may lose partially processed
requests during a connection outage. This is fixed.
Category: Object
Platforms: All
DevKey: MAK3216
Summary: When releasing locks on ^rINDEX/^rINDEXCLASS use immediate mode
Description:
In order to ensure consistency of the routine and
class index, Caché sometimes locks ^rINDEX and ^rINDEXCLASS.
This code has been changed to use immediate mode for releasing the
locks to ensure they are released straight away even if in a
transaction.
Category: Object.Gateway
Platforms: All
DevKey: HCR238
Summary: OPEN commands in %Net.Remote.Gateway to check for timeout
Description:
Open commands executed in the .NET Gateway have now
been modified to include timeouts to prevent indefinite hangs.
Category: Object.Library
Platforms: All
DevKey: DMC829
Summary: CacheSSH: Update to libssh2-1.3.0
Description:
This changes updates libssh2 to version 1.3.0 to correct an
increasing number of issues being reported in 2010.2.x installations in
the field.
Category: Object.Library
Platforms: All
DevKey: MAK3293
Summary: Trap errors in stream object inside %Net.FtpSession
Description:
When using %Net.FtpSession to send or receive data,
Caché uses a stream to put/receive the data but was not
checking for errors from the stream class (such as it running out of
disk space for a file stream). With this change, Caché will
detect this error and report an error code from the %Net.FtpSession
class with the error information from the stream embedded.
Category: Object.Storage.Default
Platforms: All
DevKey: DLP2785
Summary: Object Storage - acquire an exclusive lock on insert of atomic object if in a transaction
Description:
If %Concurrency is true then locks are acquired and
released to guarantee consistent reads. All write operations are also
guaranteed to be consistent. For %Concurrency values greater than 2,
locks are acquired and not released until the object is destructed.
This change addresses a concurrency error that occurred when an
atomic object (one that occupies a single global node on disk) is
inserted inside of a transaction. In this case, the
atomic write was not protected by a lock and a competing process could
update the newly inserted object. This is only an issue when the
transaction containing the original insert is rolled back. In that
case, an error is reported by the rollback.
An exclusive lock is now taken out on all objects during insert as
long as %Concurrency is true and, if the object is atomic, the insert
occurs within a transaction.
Category: SQL.ODBC
Platforms: All
DevKey: JCN1213
Summary: Fix ProcessRow(false) returning SQL_ERROR at 32K boundry with complete data
Description:
Calls to SQLFetch could return SQL_ERROR(-1) in the
case where a query returns 32K of data to the client and the last row
of data is complete and no more data is present on the server.
This issue has been fixed. This change handles the 100 message on the
attempt to fetch the next chunk of data, and returns SUCCESS to
SQLFetch. The next call to SQLFetch will detect there is no more data
and return SQL_NO_DATA_FOUND.
Category: SQL.Statement
Platforms: All
DevKey: DLP2849
Summary: SQL Statement - fix initial column offset in %SQL.ClassQueryResultSet
Description:
A bug that caused a result set returned by a CALL
<class_query> SQL statement to fail to send its content to an
xDBC client has been fixed.
Category: Studio
Platforms: All
DevKey: JN983
Summary: Update DICOM Association Defaults
Description:
Due to an expanded dictionary of SOP classes added
in an earlier version, the total number of SOP classes defined by the
standard exceeds 255. Some DICOM implementations cannot handle more
than 255 classes.
In order to avoid this problem the
EnsLib.DICOM.Util.AssociationContext:CreateAssocation() class method
has been updated to create its default associations with only those
SOP classes whose names contain the MOVE,FIND,GET or STORAGE
words. This presently limits the number of definitions to around 180.
This method is really only provided as a convenience for testing and
users should create their own association definitions which exactly
match the requirements of their DICOM peers to which they wish to
connect, limiting the SOP classes to those that are really needed. In
addition to being more concise, this also has the advantage of improved
performance.
Category: System
Platforms: All
DevKey: CDS1985
Summary: Fix memory overlay when using $ZU(160)
Description:
This change corrects an issue where an internal function used by
Weblink Developer could overlay memory and cause access violations in
the process.
Category: System
Platforms: All
DevKey: GK956
Summary: Modified the routine loader to preserve the string stack
Description:
When a large number of routines are loaded as part
of an object instantiation, the system may run out of string
stack. This situation has been fixed.
Category: System
Platforms: All
DevKey: GK971
Summary: Fixed large object destruction hang
Description:
Destruction of a large object hierarchy destruction
may take some time. Any of the entries are to be retained, the system
may hang. This change addresses that situation by releasing the
retained block if there are any JOBs waiting for it
Category: System
Platforms: All
DevKey: JO2472
Summary: Correct remote JOB command so new JOB does not get exception on remote references
Description:
This change corrects situations where:
- a process started
via the remote JOB command could generate an exception if the new JOB
references a global over ECP.
- a remote JOB command could fail and block ECP if the %ZSTART code for a jobbed JOB made an ECP
reference that failed.
Category: System
Platforms: All
DevKey: SAP1493
Summary: Fix accvio in a JOB server
Description:
This change corrects a situation where a jobserver
could generate an <ACCVIO> if it received a "sigur1" signal
while trying to halt its process.
Category: System
Platforms: All
DevKey: SAP1511
Summary: Fix infinite loop in global module while doing FileCompact
Description:
This correction addresses a situation where
attempting to compact a file causes the process to go
into an infinite loop taking 100% CPU.
Category: System.Journaling
Platforms: All
DevKey: HYY1677
Summary: Release lock on journal log upon error in purging journal log
Description:
This change addresses an issue that could cause journal switch
to hang after an error in purging the journal log (such as an error
resulting from insufficient disk space in the mgr directory where
journal.log resides).
Category: System.Journaling
Platforms: All
DevKey: HYY1683
Summary: Prevent database error from freezing system during journal recovery at startup
Description:
This change corrects a situation where a system
could freeze upon encountering <DATABASE> errors during journal
recovery at startup.
Category: System.Journaling
Platforms: All
DevKey: HYY1684
Summary: Eliminate an unnecessary error in scanning for open transactions in journal restore
Description:
This fix corrects an issue that could cause journal restore
to think mistakenly that an earlier file that might contain open
transactions. The problem occurred if the user was
restoring non-local journal files and did not specify a
journal.log.
Category: System.Shadowing
Platforms: All
DevKey: HYY1642
Summary: Prevent cluster shadow from being left in "trying to reconnect" state
Description:
This change corrects an issue involving cluster shadowing where a
cluster shadow copying process that died involuntarily might be left
in a "trying to connect" state, even after Caché restart.
Category: System.Shadowing
Platforms: All
DevKey: HYY1666
Summary: Ensure only one JOB gets JOBbed off to copy journal files from a source cluster node
Description:
This change addresses an issue of cluster shadowing
in certain rare circumstances (such as CPU shortage) where multiple
JOBs might get started to copy journal files from one source cluster
node. This resulted in overwriting the same destination file and
causing one or more of the cluster shadow dejournaling JOBs to get an
error.
Category: System.Trans. Proc.
Platforms: All
DevKey: HYY1686
Summary: Address a case of <STORE> error in transaction rollback
Description:
This correction addresses an issue of transaction rollback where
rolling back open transactions involving a number of global nodes
updated via bit SETs could fail with a <STORE> error.
© 2011, InterSystems Corporation. All rights reserved.