Caché Documentation  
Release Notes for Maintenance Kits Prior to Caché 5.0.13


Welcome and thank you for using Caché, the post-relational database. This document has a section for each 5.0.x maintenance kit:
There is no section for 5.0.6.
Changes for Caché 5.0.12

This section provides a listing of changes between Caché 5.0.11 and Caché 5.0.12.
This document contains several sections:
Caché 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 releases of Caché.

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 versions of Caché at the InterSystems Website.

From the home page choose the "Caché" tab, and on the "Downloads" menu, select "Documentation and Help Updates" or follow this link.


Description of a Change Report
To help you assess the impact of these changes on your applications, each change description contains a more detailed explanation of the modification.
All changes include a table giving pertinent information on the issue's likelihood, impact of the change, and whether this has already been used successfully in production by other customers. In order to make the information easy to assimilate visually, the tabular information has been simplified to a keyword or two and a value. The full explanation of the keyword meanings are:
Critical Changes In This Release

 



Category: CSP
Platforms: All
DevKey: MAK1153
Summary: %CSP.SysConnection exposes session data to client

Description:

Make sure that %CSP.SysConnection (which is used to test connectivity from the CSP gateway to the Caché server) can only be called from the gateway. If it is called from somewhere other than the gateway, it returns an HTTP error - Page Not Found.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MAK1177
Summary: If charset and content type are specified then always write out the 'charset=' header and use this charset

Description:

If a CSP page specifies a 'ContentType' and also a 'CharSet' then Caché always outputs the 'charset=<charset>' header and uses the requested charset to write the page out.

%CSP.Page does not define a CharSet by default. So this change will only effect pages where ContentType and a CharSet are explicitly defined.

Prior to this change, CSP would only write the 'charset' header out if the ContentType contained 'text/'.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement Yes

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT204
Summary: Resolve a problem whereby state-aware sessions would occasionally lock-up under Linux

Description:

This change corrects a situation where state-aware sessions (preserve mode 1) would occasionally lock-up, especially on Linux systems. In extreme cases, the Gateway could become unresponsive to other users. The cause was an internal memory access violation when responding to a session close or timeout event.

The integrity checking for state-aware connections has been improved and the logic for detecting and responding to closed sessions has been reworked.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Languages
Platforms: All
DevKey: CDS587
Summary: Provide switch so exponent must be upper case 'E'

Description:

Since Release 4.1, Caché has allowed the exponent designator for a number in scientific notation to be either upper or lower case, 'E' or 'e'. However, this is not compatible with some programs written in other dialects of the M language, which recognize only upper case 'E'. Those programs use lower case 'e' as a string delimiter. This change provides a switch which restores the behavior of recognizing only upper case 'E' as the exponent designator. The default behavior will continue to allow lower case 'e'.

To change the value of the switch for the current process, issue

SET oldvalue=$ZUTIL(68,63,newvalue)
To change the default value of the switch for all processes which start after this command is executed, issue
SET oldvalue=$ZUTIL(69,63,newvalue)
If newvalue is 1, both uppercase 'E' and lower case 'e' will be recognized as the exponent designator. If newvalue is 0, only uppercase 'E' will be recognized.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK301
Summary: ECP failed node recovery to scan for all possible ECP sessions

Description:

During ECP recovery, all ECP sessions should be reset. This change fixes a problem where some of the previous sessions would not be correctly identified and therefore not reset upon recovery.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK314
Summary: Fixed ECP client shutdown wait loop

Description:

In prior versions, ECP client shutdown didn't wait for all connections to drop, and it didn't handle free nodes properly. This change causes client shutdown to scan for all allocated slots.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK317
Summary: ECP recovery to cleanup sessions with no open transactions

Description:

ECP recovery didn't remove ECP sessions info if the session didn't have any open transactions. Because the session slot was not cleared, on the next system restart it would wait unnecessarily for that client to reconnect.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK324
Summary: Fixed a timing problem which prevented the write daemon from joining cluster failover.

Description:

Prior to this change, on slow machines, the write daemon might not join the cluster failover promptly which caused the failover to hang forever.

This was due to intercluster synchronization overwriting the write daemon recovery state, which prevented the new cluster master from resuming the recovery. This now operates properly.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK325
Summary: Reset the ECP client session on unexpected errors during recovery

Description:

This change corrects a circumstance where unexpected database errors that occured during ECP client recovery could cause the recovery to hang.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK326
Summary: Add new ECP connection states to handle hang in connection-in-progress state

Description:

This change corrects the way ECP handles connection states. Prior to this, unexpected errors could result in ECP being hung waiting for a re-connect and the only way to clear it was to restart Caché.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK349
Summary: Clear ECP pending transaction bits on halt or dead job cleanup

Description:

If a job exited unexpectedly (for example, with an access violation), ECP did not clear the pending open transactions for that client. The next job that got assigned to the same process slot inherited these transactions, causing confusion between the client and server states. This change correctly handles the cleanup.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Networking
Platforms: All
DevKey: GK350
Summary: %HALT to handle ECP open transactions

Description:

%HALT didn't rollback ECP open transactions when the client journaling was disabled. This change corrects the behavior to rollback ECP open transactions.
Note: rollback returns <ROLLFAIL> error if application server journaling is disabled. %HALT will rollback ECP transactions first, then it will raise <ROLLFAIL> error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object
Platforms: All
DevKey: BJB291
Summary: Selectivity not saved in the class if KeepClassUpToDate = 1

Description:

If you run $SYSTEM.SQL.TuneTable("Schema.Table",1,1) the Selectivity was not getting saved as part of the Class definition. This has been fixed.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: DLP1025
Summary: Don't use preconstructed inheritance tree for inheritance resolution

Description:

In some rare cases, "method does not exist" errors would be reported when compiling classes. This was caused by an error in determining which methods are inherited from the superclasses. It is now fixed.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Class Compiler
Platforms: All
DevKey: MAK1042
Summary: Prevent <MAXSTRING> when importing classes from XML with very large implementation blocks

Description:

When importing a class from an XML file into Caché with a very long implementation (over 64k of data), it was possible to get a MAXSTRING error. The import routine tried to concatenate the beginning of the last line from the first 32k block with the next block and this pushed it just over the 32k limit. Now it keeps the beginning of the last line in a separate buffer and only concatenates this with the rest of the first line from the next 32k block rather than the entire block.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Relationships
Platforms: All
DevKey: DLP1064
Summary: Don't set modified bits when swizzling related objects

Description:

When a reference is swizzled, the modbit for that property is not supposed to change. This changes corrects the behavior; the value of the modbit is unchanged for simple swizzling.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: Object.Storage.Default
Platforms: All
DevKey: DLP1288
Summary: Clean up empty index globals in %DeleteExtent

Description:

The bitmap extent index for a class is automatically built whenever any index is built and the bitmap extent has never been built. When all instances are deleted from an extent there was a situation that caused the system to incorrectly assume that the bitmap extent index was already built.

This has been fixed by assuring that indices are purged whenever extents are removed. If any instances fail to be deleted successfully, the indices remain.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN228
Summary: Release Stream OREFS following parse

Description:

The SAX parser caches the XML parser it uses for performance reasons. During entity resolution, CacheStreams may be created via callbacks to %XML.SAX.EntityResolver and its subclasses. As a side effect of parser caching, the OREFS of these stream objects are also cached. (They are eventually garbage collected, but in a non-deterministic manner). This causes a problem if the user of the parser were to change namespaces before garbage collection of the stream occurs.

This modification corrects the error by reclaiming the streams as soon as the parse is completed.


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: Object.XML
Platforms: All
DevKey: JN229
Summary: Return LocalName For EndElement NodeType %XML.TextReader

Description:

When the XML Reader NodeType was 'endelement', the LocalName property returned empty string. This correction makes it return the proper value.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2248
Summary: Use fields in subscripts when determining MapBlocks

Description:

An enhancement has been made to the calculation of a Map's estimated block usage to include information about the fields in map subscripts for the map. Now an index of the form:
^glo("index",Field1,Field2,ID)=""
will have a higher "cost" than an index of the form:
^glo("index",Field1,ID)=""
If the query optimizer can use an index on Field1, the second index should now be chosen.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement Yes

 



Category: SQL
Platforms: All
DevKey: DPV2252
Summary: Tune Table via SQL Manager was not updating map statistics

Description:

An oversight has been corrected where a table's query optimizer information was not fully updated until the class was recompiled. This was missed when the extentsize of the table was calculated through SQL Manager's tuning facility.

Likelihood High
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2255
Summary: Use $Get() for invalid condition / NEXT code with piece map when needed

Description:

In the situation where the last subscript defined in a storagemap for %CacheSQLStorage was a constant, attempts to execute a runtime query against this table could result in an <UNDEFINED> error. Whether the error occurred or not depended on the details of the global structure for the storage.

The possibility of this error has now been removed.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2267
Summary: ASC does not work correctly

Description:

Prior to this change, a query that JOINs two tables in a WHERE condition and has an ORDER BY <f1> DESC, <f2> ASC might not return the rows in the correct order. This has now been corrected.

Likelihood Low
Risk Medium
Ad Hoc Yes
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2270
Summary: GetCachedQueryInfo gets <NULLVALUE> error

Description:

In prior versions, Caché might fail to display the text of a cached query when listing the queries of a namespace. This change corrects that error.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL
Platforms: All
DevKey: DPV2278
Summary: Correct query generation for RowID mapping

Description:

This change corrects a situation where a table which uses %CacheSQLStorage and specifies its own Map RowID Specifications might generate improper map definition code. This causes improperly generated query code for queries against the table.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.DDL
Platforms: All
DevKey: DPV2283
Summary: Fix <UNDEFINED> error When InvalidCondition in Map

Description:

This change corrects an error in constraint checking. Under some circumstances, the checking of a unique constraint or a foreign key referential integrity check by SQL might produce an <UNDEFINED> error. This happened when an SQL query was needed to check the constraint, and the constraint was on the IDKey field.

Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: SQL.GateWay
Platforms: All
DevKey: MIT356
Summary: Infinite loop in CEnvironment::DisconnectAll()

Description:

Under some circumstances, Caché processes could generate a high CPU load after the user has closed them. The symptom was caused by an infinite loop in the process disconnect logic. This change eliminates that circumstance.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: SQL.ODBC
Platforms: All
DevKey: JCN482
Summary: Use localized decimal separator

Description:

A new checkbox has been added to the DSN configuration screen: "Use Locale Decimal Symbol". By default, CacheODBC sets the default decimal separator to "." to provide legacy support for some customers. Unfortunately, this causes some difficulties with applications like PowerBuilder that prefer to use the decimal separator as defined for the current locale.

Checking the checkbox "Use Locale Decimal Symbol" will use the decimal separator in process and leave its value unchanged. Leaving this unchecked will give the old default behavior of setting the decimal separator in the process to "." regardless of the locale.

This setting is defined for all DSNs on a system as it is a property of the driver when it is loaded. On Unix, setting the environment variable CACHEODBCLOCALEDECIMAL = 1 lets the driver use the Locale's decimal separator value.


Likelihood Low
Risk Medium
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: DPV2260
Summary: Fix line-too-long issue with 16 map subscripts and overriding data access expressions

Description:

Under some circumstances, an SQL query might generate code in a single line which is too long (longer than 4095 characters). This can happen when there are many subscript levels (greater than 15) in the map definition and overriding data access expressions are used in the map definition.

This change corrects the problem.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQL.Query Processing
Platforms: All
DevKey: PVA070
Summary: A SELECT * query with joins on single column idkey columns does not work properly

Description:

An error has been fixed where conditions (especially JOINs) on single column idkey columns did not behave properly if the SELECT clause were 'SELECT *'. The suspect behavior could be poorly performing plans or SQLCODE= -400 when the query executes.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: SQLManager
Platforms: All
DevKey: YSD768
Summary: Menu options don't work in SQLMgr/Object/Execute/Query

Description:

In prior versions, choosing to execute a query from SQL Manager, but selecting an option from the menu after the query had been typed but not run, would not execute the query. The option choice and query execution would run properly, however, if you used the keyboard shortcuts to execute it instead.

This circumstance has been corrected.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: CDS427
Summary: Fix ZQUIT 1 when $ZT=""

Description:

This corrects a problem that would cause an error handler to be skipped when a lower level error handler issued
ZQUIT 1 GOTO @$ZTRAP.
The problem happened when the lower level error handler set $ZT="". This would cause the ZQUIT 1 command to bypass the next error handler.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1825
Summary: Fix dead job cleanup to release global buffers

Description:

The code which cleans up after dead jobs in Caché will now check to see if the job has retained a global buffer and if so, it will free it.
Note: This does not mean that any global buffers owned by the dead job will be released. In many circumstances it is not safe to release the buffer as doing so might result in database degradation getting written to disk.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: JO1826
Summary: Write image restore refuses to run if Caché shared memory section exists

Description:

The write image restore program will now refuse to run if Caché appears to be running from the manager's directory specified as part of the restore. A message noting this will be logged in the console log.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Unix
DevKey: LRS813
Summary: Fix TCP read and accept timeout handling under Unix

Description:

A bug in timeout handling for TCP read requests under Caché/Unix has been corrected. It could cause the READ to continue waiting past the specified timeout if the process were probed by ^%SS, ^JOBEXAM, or similar interrupting utility programs.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: Windows
DevKey: RJW753
Summary: Logging off windows causes dead cache processes

Description:

On Windows systems, Caché processes running in a Windows Command Prompt window or running from a local Caché terminal (the title bar will contain Caché TRM:processId) will be improperly terminated when the user who started them logs out of the Windows Workstation. This improper termination also occurs in Caché processes started via the job command from these processes. This problem has existed since Caché 4.0.

This change corrects this problem by establishing a console control handler to catch the Windows Logoff event and exit Caché normally. It also changes the way processes started by the job command are created so they will persist following logout from the Windows Console.

Users may encounter one different behavior in processes started by the job command. Since the process is started by the Caché control process at the request of the Caché foreground process, the jobbed process no longer runs in the login session of the user at the console who created the process with the job command. This means that on Windows XP, the process created by the job command will not be able to access network devices using the drive letter mappings defined for the user logged into the Windows console. You should use the UNC naming convention (that is \\server\share...) instead of the local drive mapping (eg. w:\...) in your code to access network shares from processes started by the job command.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SJ1560
Summary: Fix JOBEXAM causing access violations later

Description:

This corrects a rarely occurring situation where using JOBEXAM to view a process could cause that process to crash and get an access violation. This happened in the case where the examined process was completely out of process-private memory.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML472
Summary: Fix missing one DDP job array allocation

Description:

When an MSM job with a large internal job number accesses a remote Caché system using DDP, it may get <DSTDB> error.

This change fixes this problem.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System
Platforms: All
DevKey: SML475
Summary: Fix missing wake up on write daemon lock complete, and avoid forcing ENQ daemon while shutting down master

Description:

This change corrects a problem with cluster failover failure when the master node is shut down. The source of the issue is that write daemon failed to notify the shutdown requestor when it finished causing a long delay. Also, the ENQ daemon has to be forced down when the cluster node is shutdown.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Backup/Restore
Platforms: All
DevKey: HYY885
Summary: Correct switch setting propagation in clusters

Description:

On a cluster platform, a situation may occur during backup if the procedure to block and quiesce updates/accesses gets an error or fails to quiesce. The problem is that switches set locally but outside the backup program may get cleared during backup.

This change corrects the issue.


Likelihood Medium
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: System
Platforms: All
DevKey: SML476
Summary: Fix ACCVIO on scan through lock table

Description:

This change eliminates a small timing window where a ^LOCKTAB or ^$LOCK SSVN could get an access violations when there is a large volume of lock table activity.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Cluster Specific
Platforms: All
DevKey: JO1798
Summary: Suspend lock timeouts over ECP during cluster failover and cluster backups

Description:

CLU^SWSET, ENQ10^DBACK and ENQ13^DBACK have been enhanced so that timed locks will not time out while switch 10 or 13 is set in a cluster.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY762
Summary: Enable null subscript support in journal restore and rollback

Description:

This change eliminates potential <SUBSCRIPT> errors during journal restore and transaction rollback.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY928
Summary: Allow transaction rollback in journal restore even when current journal file is not involved

Description:

In interactive mode, journal restore prompts for transaction rollback if some transactions remain incomplete at the end of restore. This happens even if the current journal file is not involved in the restore.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY944
Summary: Fix a problem in locating next journal file

Description:

This change addresses a problem with locating the next journal file. In earlier versions, Caché could incorrectly compute the next journal file name. This has now been corrected.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: Tru64, OpenVMS
DevKey: HYY952
Summary: Address issues updating cachejrn.log

Description:

Cluster journal files are logged in cachejrn.log in the pij directory of a Caché cluster. This log, cachejrn.log, is used by cluster journal restore and cluster shadowing to locate every journal file used by any past or present node of a Caché cluster.

This change causes failures in logging the journal file name in cachejrn.log to be reported in cconsole.log.

On VMS, updating cachejrn.log allows read sharing, eliminating a potential cause of update failure in lieu of cluster shadowing.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY960
Summary: Update transaction index properly

Description:

This change corrects a circumstance where the beginning offset of an open transaction was set to a value smaller than it should be. This did not affect transaction rollback but could affect those applications that assume the return value points to a valid journal record.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Journaling
Platforms: OpenVMS
DevKey: HYY964
Summary: Fix an <ENDOFFILE> problem with reading journal files using sequential I/O on VMS

Description:

This corrects an issue on OpenVMS that may cause a copier on the source side of fast-mode shadowing to get occasional <ENDOFFILE> errors when reading a very small journal file.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Journaling
Platforms: All
DevKey: HYY966
Summary: Retry journal expansion with smaller size, rather than switching to a new file, if bigger size fails

Description:

This corrects an issue that could result in unnecessarily many small journal files when the amount of free space on the journal disk is less than the expansion size of the journal file.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY603
Summary: Maintaining transaction states on the shadow (fast-mode only)

Description:

Fast-mode (aka "block-mode") shadows are now transaction aware and maintain a list of incomplete transactions that are applied on the shadow. To roll back incomplete transactions, stop shadowing and execute
SET rc=$$ROLLBACK^SHDWCBLK(ShadowID)
where ShadowID is the name of the shadow, and "rc" is the result code for the operation: 1 = success and 0 = failure.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY834
Summary: Correct a problem that caused shadow source nodes to be mistakenly deleted

Description:

This corrects an instance where choosing "this system as source" in control panel may not show any server info (and may get an <UNDEFINED> error) even if there is a running server servicing a shadow.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY835
Summary: Improve error recovery in shadowing

Description:

This change improves the error recovery processing in shadowing by addressing an issue affecting how stack was unwound when errors are passed on to upper level routines.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: Tru64, OpenVMS
DevKey: HYY946
Summary: Address a couple of issues of opening cachejrn.log in JRNINFO

Description:

This change does two things:

  1. It prevents occasional <NOTOPEN> errors (generated from updjrninfo^JRNINFO) on the cluster data server ("source") of shadowing.

  2. It allows multiple jobs on the source to open CACHEJRN.LOG file for READ simultaneously, resulting in some degree of performance improvement on journaling and shadowing.
Note: The latter item affects VMS clusters only. Read sharing is already in use on Tru64 clusters.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: OpenVMS
DevKey: HYY951
Summary: Address <ENDOFFILE> errors in shadowing on VMS

Description:

This change corrects a problem where the source of fast-mode shadowing (i.e., data server) on OpenVMS might get occasional <ENDOFFILE> errors.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY953
Summary: Address a partition issue in cluster shadowing

Description:

This change corrects an issue that some component of cluster shadowing might use more process memory than specified in Caché configuration.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY956
Summary: Disable journaling ^%SYS("JRNINFO") (for cluster shadowing)

Description:

Updates to ^%SYS("JRNINFO") by JRNINFO server are no longer journaled.

This addresses an issue of cluster shadowing where the shadow of a source server with no user activity is constantly seen as busy if ^%SYS("JRNINFO") is marked journaled (or "journal all globals" is set in 5.0.x).


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY957
Summary: Cluster shadow keeps device open for the same JRNINFO server whenever possible

Description:

This change corrects a performance issue where each cluster shadow request resulted in a JRNINFO server being jobbed off. Now, JRNINFO servers corresponding to a cluster shadow stay around whenever possible.

Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: HYY986
Summary: Allow cluster shadow GUI on non-cluster platforms

Description:

This change corrects a situation where the control panel could report an <UNDEFINED> error when attempting to manage a cluster shadow, if the system running the shadow was different different in kind from the system running the cluster. An example of this would be a Windows system shadowing a VMS cluster.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: System.Shadowing
Platforms: All
DevKey: RJF022
Summary: Compatibility-mode shadow should avoid reading beyond end of current journal

Description:

A correction to compatible-mode (record-mode) shadowing has been made to prevent the source of shadowing from sending journal records to the shadow destination which have not yet been written to the current journal file

This corrects a problem where the source of shadowing could get transient <FUNCTION> (or other error) while processing the current journal file during a journal switch. It also corrects an issue where, if the source of compatible-mode shadowing crashes, the shadow destination may have more recent completed transactions than what is available on the source after recovery.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: System.Shutdown
Platforms: All
DevKey: RJW945
Summary: Extra process started during shutdown for Windows 2003

Description:

Shutting down Caché on a Windows Terminal Server system can leave a cache.exe process attached to the shared memory object if ^SHUTDOWN takes more than about 3 minutes. This residual cache.exe process prevents the configuration shared memory from being destroyed at shutdown. This prevents Caché from being restarted without either rebooting Windows or terminating the residual process with the Windows task manager.

This change properly shuts down all the processes.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: CFL1150
Summary: Allow defining a cluster shadow on a system that doesn't support clustering

Description:

Prior to this change, Caché would refuse an attempt to define the shadow for a cluster to be a machine type that did not itself support clustering. This has been corrected.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: LFT1292
Summary: Handle 2k corrupt directory better

Description:

This fixes a problem in integrity checking of very old ISM databases. Running INTEGRIT would give false errors when global name is not in the top pointer block.

This corrects the issue so that the error is only given when there really are duplicate pointers in the global directory.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Utilities
Platforms: All
DevKey: MAK1123
Summary: rMACSAVE data is inconsistent

Description:

In prior versions, when saving MAC/INC from Studio, the data stored in ^rMACSAVE or ^rINCSAVE had the root node incorrectly formatted. This should be the $horolog value of the time this MAC/INC was last changed.

This change sets the proper value in place.


Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Documentation Updates
The content of the Caché documentation evolves from release to release in response to editorial improvements, updates to existing material, and addition of new information. The following is a summary of the most noteworthy changes to the Caché documentation since the previous release:

These are in addition to minor enhancements in examples, as well as corrections and improvements to grammar and spelling.

Changes for Caché 5.0.11

This section provides a listing of changes between Caché 5.0.10 and Caché 5.0.11.
This document contains several sections:
Caché 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 releases of Caché.

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 versions of Caché at the InterSystems Website.

From the home page choose the "Caché" tab, and on the "Downloads" menu, select "Documentation and Help Updates" or follow this link.


Description of a Change Report
To help you assess the impact of these changes on your applications, each change description contains a more detailed explanation of the modification.
All changes include a table giving pertinent information on the issue's likelihood, impact of the change, and whether this has already been used successfully in production by other customers. In order to make the information easy to assimilate visually, the tabular information has been simplified to a keyword or two and a value. The full explanation of the keyword meanings are:
Critical Changes In This Release

 



Category: Config Mgr
Platforms: All
DevKey: CFL993
Summary: Add Hyperevent Implementation to Config Manager

Description:

A new CSP parameter, Hyperevent Implementation, has been added.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: Config Mgr
Platforms: All
DevKey: CFL999
Summary: Convert Hyperevent parameter from old CSP apps on upgrade

Description:

New CSP Applications will be created with the Hyperevent Implementation parameter equal to "Select on server". On upgrade, existing CSP Applications whose Hyperevent Implementation parameter is missing will have it created with the value "Use Java applet".

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP
Platforms: All
DevKey: MXT525
Summary: Use XMLHttpRequest browser object instead of Java for hyperevents

Description:

This change introduces the optional use of the XMLHttpRequest Javascript object to implement #server. The actual method used to implement #server is determined by a new Configuration Manager parameter for CSP applications, called "Hyperevent Implementation". "Hyperevent Implementation" has four possible values that determine how #server is implemented:

where:


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement Yes

 



Category: CSP
Platforms: All
DevKey: MXT635
Summary: In 3.2 compatibilty mode, &html will ignore < and > within <%...%>

Description:

In &html 3.2 compatibility mode, CSP will ignore < or > within <% ... %>. This is meant to handle constructs like
&html< <% w "first->last" %> >
which are encountered in Cache 3.2 WebLink applications.

Likelihood Low
Risk Low
Ad Hoc No
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT118
Summary: Improve the validation of the session token's fields after a failover/restart situation.

Description:

This change improves the validation of the session token's fields after a failover (or web server/NSD restart) situation.

Previously, a request could be directed to an incorrect (or unexpected) Caché server after a web server/NSD restart. This issue could also result in requests in Virtual Host configurations being directed to incorrect (or unexpected) Caché servers. The term, 'unexpected' Caché servers, means a Caché server configured as an alternative to the main (or default) server).

Editing the Gateway's server and/or application configuration on web server/NSD startup would make problems of this nature more likely to occur.


Likelihood Low
Risk Low
Ad Hoc Yes
Enhancement No

 



Category: CSP.Gateway
Platforms: All
DevKey: CMT192
Summary: Fix a problem in the transmission of form data in which CSP* variables (e.g. CSPToken) were placed at the end of a form posting more than 8K of data.

Description:

This change corrects an issue in the transmission of form data in which CSP* variables (e.g. CSPToken) were placed at the end of a form posting more than 8K of data. The problem manifested itself as such forms failing validation checks on submission ('Illegal CSP Request' errors).

Likelihood Low
Risk