|
|
|
InterSystems Documentation
|
|
Caché 5.2.4 Maintenance Kit Release Notes
|
Topics
General Announcements
InterSystems advises all users to recompile their applications as part
of the upgrade process so as to take advantage of all the performance
improvements as well as other changes that may affect them in this release.
This release describes the change made since Caché 5.2.3.
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.
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. The format for this description is a Change Report.
Each Change Report provides a table with the following information:
-
Likelihood: The probability that a user on the affected
platform will encounter this issue.
-
Risk: An assessment of how likely this change is to
introduce additional issues into the application environment.
-
Ad Hoc: Whether this change has previously been
deployed in an ad hoc release and successfully used by customers in production.
- Enhancement: Whether this change provides new
features or capabilities for the product.
- Config Mgr
- Installation.UNIX
- MgtPortal
- Networking
- Networking.ECP
- Security
- Studio
- System
- System.Cluster Specific
- System.I/O
- System.Journaling
- System.Licensing
- System.Lock
- System.Shadowing
- System.Shutdown
- System.StartUp
- Utilities
- Utilities.Configuration
- Utilities.Routines
Category: Config Mgr
Platforms: All
DevKey: CFL1468
Summary: Fix slowness in startup (.cpf file import)
Description:
An issue has been corrected
where huge config files would cause startup to take more than 10 minutes.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL1470
Summary: Fix STUCNFG to not parse the .cpf file
Description:
An error has been fixed where the config file was
parsed and imported in places other than STU. This could cause odd
effects when customers edited the CPF file by hand and their changes
made it into Caché before they imported
them.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL1474
Summary: Fix subscript-level mapping when collation = -1
Description:
An error has been fixed where entering a
subscript–level
mapping for a global could cause startup to fail.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL1475
Summary: Fix error in database deletion via ^DATABASE
Description:
An error has been fixed where deleting a database via ^DATABASE would cause an ERROR #642.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL1478
Summary: Audit changes in ECP properties
Description:
An error has been fixed where changes in ECP network properties were not logged in the Audit database.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Config Mgr
Platforms: Linux
DevKey: CFL1479
Summary: Fix chmod problem on Linux
Description:
An error has been fixed where a permission error
occurred in a chmod call during startup and shutdown.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Config Mgr
Platforms: All
DevKey: CFL1483
Summary: Fix proliferation of backup files
Description:
An error has been fixed where backup CPF files were
created when Caché was restarted, even when there were no
changes to the configuration.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Installation.UNIX
Platforms: All
DevKey: ALE1021
Summary: Identify 64-bit AIX systems as capable of running both "ppc" and "ppc64" platforms
Description:
UNIX installation will allow users to install both "ppc"
and "ppc64" platforms on 64-bit AIX systems regardless of CPU
architecture. Prior to this change it would not list ppc64 as a valid
platforms for the POWER3 architecture.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Installation.UNIX
Platforms: All
DevKey: ALE1172
Summary: Clean up old OS runtime and ICU libraries on upgrade on UNIX
Description:
Before installing SAX and Basic files, we will clean up the following files from <cachesys>/bin in upgrade installations on UNIX:
libCstd.so.1, libCrun.so.1, libicudata.so.21, and libicuuc.so.21.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Installation.UNIX
Platforms: All
DevKey: ALE1224
Summary: Force private Apache on UNIX to use IPv4 sockets
Description:
On Caché startup, the web port will be passed in the
form "0.0.0.0:<portnumber>" to force Apache to use only IPv4
sockets. This is done as a work around against a problem in the IPv6
implementation on some Solaris versions; IPv6 sockets would
sometimes disappear and Apache would not stop correctly on Caché
shutdown.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: MgtPortal
Platforms: All
DevKey: YSD1315
Summary: How to delete journal files
Description:
Deleting of journal files is now done through the
Task Manager.
In the Management Portal, on the Operations side, a new item, "View
Task Schedule",
has been added. This page shows a table with all the task schedules.
The operator can create a Task to purge journal at a desired time or
frequency.
However, when Caché is installed, the purge journal task is
already defined and set to run periodically.
It may be modified and/or replaced as necessary.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: MgtPortal
Platforms: All
DevKey: YSD1467
Summary: Global mappings preserved by browser after namespace deleted
Description:
When a namespace and global/routine
mappings are created through the
Management Portal, and then later the namespace is deleted,
creating a
new namespace with the same name before restarting the
browser would result in the previous mappings appearing in the
Management Portal.
This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: MgtPortal
Platforms: All
DevKey: YSD1498
Summary: Shadow parameter to keep files from getting purged immediately
Description:
This change
adds a shadow parameter to allow the user to specify how old the
shadow copy of a source journal file can be before it gets
purged.
In the Management Portal, Configuration, Shadow Server Settings page,
there is an option to "Add New Shadow or Edit an existing shadow."
Selecting "Advanced" now shows an additional prompt:
Days of old copied journals to keep:
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: MgtPortal
Platforms: All
DevKey: YSD1501
Summary: Missing "Null Subscripts Enabled"
Description:
This change adds the "Null Subscripts Enabled"
option to the Advanced Configuration/ObjectScript section.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: MgtPortal
Platforms: All
DevKey: YSD1578
Summary: Management Portal can erase global mappings if using same portal window after Caché reboot
Description:
If the Management Portal was used to create global mappings, and
Caché is restarted, selecting "New Global Mapping" in the
portal
may erase the previous mappings because the browser was unaware of the
Caché restart. This problem has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking
Platforms: All
DevKey: GK527
Summary: Fixed UNIX socket delegation access permissions
Description:
Currently the control process is run/set with a different user id than the super server. If the control
process is not root, it cannot accept/import the delegated sockets from the super-server.
This change modifies the socket delegation to give (rw) access to any
job it tries to delegate the socket to. (In prior releases, it had
been limited by the umask setting of whoever started the Caché instance).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking.ECP
Platforms: All
DevKey: GK589
Summary: Invalid global names created via ECP
Description:
ECP application servers with multiple connections
may encounter this issue in rare conditions—
An ECP client attempts to optimize duplicate globals sent to the server. The optimization caches the last
global used across ECP, but the cached information is not invalidated consistently when multiple connections
are involved, and the request sequence numbers match.
This issue has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Networking.ECP
Platforms: All
DevKey: GK634
Summary: Modified the ECP server to ignore the dead sessions unlock jrn-position
Description:
The ECP server guarantees the associated changes are
durable before granting a lock.
In rare conditions,
the validation did not account for dead ECP server sessions properly.
This change guarantees that, in the worst case,
the database server with dead ECP server sessions may end up in an unexpected long wait.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Networking.ECP
Platforms: All
DevKey: GK635
Summary: Dead job cleanup may not release locks granted across ECP
Description:
Remote de-locks originated by the dead-job cleanup may fail and leave the ECP client in an unexpected
state. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Security
Platforms: All
DevKey: STC1072
Summary: Don't change maximum database size on upgrade to 5.1 or later
Description:
This change corrects an error where, during an
upgrade, the maximum database size could be altered.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Security
Platforms: All
DevKey: STC1112
Summary: Only rebuild routine index if necessary during ^INSTALL
Description:
In previous versions, whenever Caché was
installed on an existing system, all the routine indices were rebuilt
for all the user databases. Now Caché only rebuild these
indices if
it is upgrading from an older version.
For example, upgrading from 5.2 to 2007.1, will rebuild the
indices. Installing
an ad-hoc of 2007.1 on top of an existing 2007.1, will not rebuild the
indices.
This makes installs of maintenance releases quicker.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: DVU1798
Summary: Open dialog. Save file pattern with '*' and default to it
Description:
This change alters Studio so that it only saves
patterns including '*' for its file list, and the last-used pattern
becomes the default for the next attempt to locate files.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: DVU1812
Summary: Studio calls lock on a document that is already locked
Description:
This fixes an issue where Studio attempted to lock a
document twice.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Studio
Platforms: All
DevKey: MAK1904
Summary: ^ROUTINE lock lost after using template
Description:
When a template was used for the first time in a
Studio session, it removed any locks Studio currently had open. This
would allow other users to edit routines/classes that this Studio
should have maintained exclusive access to. This is now fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS1035
Summary: Release global block during pattern match
Description:
This change causes Caché to release the global block that the process
may be retaining from the most recent global operation when a pattern
match operation begins. This allows
other processes to proceed with access to the global during the possibly long
time of the pattern operation.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS1118
Summary: Limit pattern recursion
Description:
The system will limit the recursion depth for its pattern matching algorithm
to prevent abnormal process termination. If the pattern can not be resolved
within that limit, it will throw a <COMPLEX PATTERN> error.
This means that the system was unable to perform a pattern match because the
pattern was too complex to be applied to the given input string. The pattern
should be simplified by reducing the number of alternations and indefinite
counts, or the input string should be broken into smaller segments for
matching.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS1119
Summary: Create more space for error trap after <FRAMESTACK>
Description:
On some 64-bit platforms, the %ETN error trap was not able to complete normally
after a <FRAMESTACK> error. This could cause repeated <FRAMESTACK> errors and
filling of the CacheTemp database. More entries will now be popped from the
execution stack before %ETN is run to properly handle a <FRAMESTACK> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS1154
Summary: Fix local variable $DATA issue after MERGE then KILL
Description:
A MERGE into an existing local variable node, followed by a KILL of that node
should leave $DATA() = 0. This change fixes a situation where
$DATA() would report 10 and $ORDER() would return
a subscript which did not exist.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: CDS935
Summary: <FRAMESTACK> error handling improvement
Description:
When a <FRAMESTACK> error occurs, the system attempts to remove some execution
levels in order to have enough room to run an error trap. The algorithm that
it used was not sufficient to run the entire %ETN error trap, causing incomplete
error logging or recursion within error traps. This is now corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK518
Summary: Changed UNIX socket delegation to use a different directory
Description:
Socket delegation uses UNIX domain sockets to pass an open socket to the new job. The UNIX domain
socket path is limited to 108 chars (104 on some systems). To create a
unique UNIX domain socket name, Caché formerly used
<mgr dir>/nti/<job num>. If the manager directory path
was long,
the path length exceeded that limit.
The socket is created for a very short time during job creation. The
algorithm was modified to use
/tmp/ directory in the path instead.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: GK579
Summary: Fixed cluster member write-image journal header corruption
Description:
In rare circumstances, the cluster master normal
shutdown may corrupt the write-image journal header which prevents the system from
restarting with journaling enabled. This has been corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: HYY1367
Summary: Set the journal sync position (for write daemon) to the right value after opening a new journal file
Description:
This change corrects an issue involving a manual journal switch in
"quiet" Caché system — one where no global SETs
or
KILLs are being done.
In this situation, "ccontrol stat" may appear to show that the write
daemon is unresponsive.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO2099
Summary: Write daemon defers clearing freeze flag until it completes an entire pass
Description:
If the system becomes marked as frozen while the
write daemon is writing to the databases, the write daemon unfreezes
the system when it completes writing the databases. But it is immediately
frozen again until the write daemon writes the write-image journal for
the next pass.
This has been changed so that the system will remain
frozen until the write daemon completes the subsequent pass to allow it more
time to catch up if it has fallen behind.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO2109
Summary: Add cstat -K<switch #> to clear switches
Description:
A -K<switch #> option has been added to cstat
to clear switches in the corresponding instances of Caché. This
is intended to be used only in an emergency, for example, if a process sets a switch
and exits. Setting a switch (eg. 13) and exiting may leave
Caché in a state where a process cannot get into the system to
clear the switch.
The command
will clear switch 13.
Warning: This function must be used extremely carefully as switches
within Caché are generally only set for specific reasons (such as a
backup) where activity needs to be suspended.
If the process which set
the switch is actually running it will not notice that the switch was
cleared and it may report a successful completion when in fact the
results are corrupt.
Use of the -K option is recorded
in the console log and the user is warned that this is dangerous and
asked to confirm the operation before continuing.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO2113
Summary: Retry loop in getdatabaselock() did not reload mailbox message
Description:
An error has been fixed which could result in an
exception in the write daemon if the journal file is switched twice
while the write daemon is busy writing blocks back out to the database
files.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO2125
Summary: Find correct left ptrblk when gcompact starts in the middle of a global
Description:
A problem with gcompact has been resolved where it
would sometimes report a <DATABASE> error which in turn could
freeze the system. This occured when starting the compaction in the middle of a
global. Sometimes this occurs internally in the gcompact routine as
the system code may return to the COS routine periodically to report
progress when compacting a large global.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: JO2148
Summary: Update write daemon monitor so system doesn't suspend if write daemon is doing any writes
Description:
The criteria for suspending the system when the
write daemon takes more than 5 minutes to complete a pass has been
extended; as long as the write daemon is writing some blocks to
disk, the system does not get suspended.
A note will be generated in
the console log when this occurs because it is not healthy for a
system to take this long to write a set of blocks to disk, especially
if it happens on consecutive passes. Users will not be locked out
as long as some progress is being made. The system may eventually run
out of free buffers; in this case, users will be locked out.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: UNIX, OpenVMS
DevKey: JO2158
Summary: Error handling for multiple write daemons needs to track errors from all slaves
Description:
Under rare circumstances, when Caché is running on UNIX and OpenVMS
platforms, if multiple write daemons enountered I/O errors, the
system would be suspended. (The system would be unsuspended when
any one of them completed their pending operation.)
The correct
behavior is to keep the system suspended until all of them complete
their pending operations succesfully. It is implemented by this change.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: LRS1031
Summary: Command line routine parameters and class method references
Description:
The command line handling for Caché application mode has been
enhanced to permit passing parameter lists consisting of string and/or
numeric literals as well as omitted (void) parameters. Routines and
procedures can be invoked, and class method calls may also be made.
General syntax forms are:
tag+offset^routine
tag^routine([parameter-list])
##CLASS(package.class).method([parameter-list])
More specific syntax forms are:
^routine
tag^routine
tag+offset^routine
+offset^routine
routine
^routine()
tag^routine()
routine()
^routine(parameter-list)
tag^routine(parameter-list)
routine(parameter-list)
##CLASS(package.class).method()
##CLASS(package.class).method(parameter-list)
##CLASS(package.class).method
A parameter list may appear as:
("string literal",,-+-000123.45600E+07)
where omitted (void) parameters are passed as $Data(parameter)=0 to
the target.
Whitespace and shell metacharacters must be quoted in an
O.S. dependent fashion. For example:
Windows:
General^^ADMIN(""""%username%"""",,-12.34,""""a b"""")
UNIX:
"General^ADMIN(\"$USER\",,-12.34,\"a b\")"
OpenVMS:
"General^ADMIN("""+F$USER()+""",,-12.34,""a b"")"
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: UNIX
DevKey: LRS1036
Summary: New cstart argument for use by HA failover scripts
Description:
The Caché startup script for UNIX has been enhanced to avoid
accidental misuse in high availability failover configurations.
Formerly the customer failover script was responsible for deleting the
cache.ids file and starting Caché, but if it were accidentally invoked
in other than a bona fide failover situation, there could be severe
interference with a running instance of Caché on that node.
The current change will not allow startup to proceed if Caché is
already running, even if an accidental failover is commanded. To
enable this functionality, replace script lines such as:
rm <directory>/mgr/cache.ids
ccontrol start <instance>
with:
ccontrol start <instance> @failover@
It is important that a properly configured, secure failover
filesystem should only permit write access to a single node at any
given moment, being switched under exclusive control of the failover
software. If the filesystem allows simultaneous write access to
multiple nodes, Caché will not be able to block an accidental failover
startup should the instance already be running on a different node.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: OpenVMS
DevKey: MAK1836
Summary: Remove dependency of 'GETFILE' on OpenVMS
Description:
On OpenVMS, there is no way from
Caché to determine the record format of a file at all. So when
doing an XML import, Caché always assumes the file is not in 'UNK'
mode and copies the file to a new file so the record format is known
and
it can later be imported.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System
Platforms: All
DevKey: RJF056
Summary: Cstat self-diagnosis for hung systems
Description:
Cstat has been enhanced to allow it to perform
self-diagnostics for many types of system hangs.
When the -S option
is selected, cstat first attempts to determine if the system is hung
in a way that can be self-diagnosed. If it is hung in such a way,
then it examines the system state in effort to identify the cause of
the hang. Informational messages report the progress of
the self-diagnosis and any relevant recommendations to the user.
Finally, cstat lists processes which are suspected of
causing the hang at that Caché system level.
Each process
reported may be in one of several possible states. The states
reported and their meanings are as follows:
- SUSPECT:
Processes in this state are suspected of causing the hang. These
processes should be investigated with debugging tools native to the
operating system or dumped with user-mode process dumping tools in
order to determine their state.
- EXONERATED:
Processes in this state were suspected of causing the hang, but were
determined to be waiting for another process, thus are not likely to
be the cause of the hang. Processes in this state typically do not
need to be investigated further.
- DEAD:
Processes in this state are suspected of causing the hang and
additionally are believed to have exited at the operating system
level. Typically no further investigation of these processes can be
done.
- LOSTWAKE:
Processes in this state are suspected of causing the hang.
Additionally, they are believed to be hibernating and have failed to
be awoken by another process. These processes should be investigated
with native operating system debugging tools like jobs in the SUSPECT
state. It may be possible to resume the system by sending a wakeup to
these processes using cstat -P<job#>
Note that not all types of hangs necessarily result in having any processes requiring further investigation.
In a Caché cluster, the cstat self-diagnostics should be run on
all cluster members. It is possible that one cluster member may
appear to be hung before the others. Typically, within 10 minutes the
other members become hung because the write daemons time out while
trying to synchronize with the other nodes. For this reason, the
self-diagnosis may not detect the hang on one or more nodes of the
cluster until this timeout has expired.
Additionally, this change adds a new bit 2048 to the cstat -p option.
When the 2048 bit is on the sfn and block number of each process's
retained buffer (pgbdbsav) is displayed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP610
Summary: Warn when cache.ids is missing or doesn't match the shared memory segment
Description:
This change introduces a check for a valid cache.ids
file in ECP configurations.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP672
Summary: Fix allocated buffers display for 5GB
Description:
An allocated space of 5GB for buffers displays as 948MB (although the full 5GB is
actually allocated). This is the result of an overflow during
conversion and has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP677
Summary: Home->Globals, failure with 2k db with %globals in it
Description:
If a 2k database has %globals stored in it,
an attempt to view them using the Management Portal fails with an
error message:
Database, c:\datasets\mdm\, is not available
This does not occur if the 2k database does not have any %globals in
it, or if the database is 8k. This has been fixed.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP759
Summary: Low ulimit can cause database errors
Description:
Beginning with Caché 5.1, for all UNIX systems,
the hard limit for the maximum file size (RLIMIT_FSIZE) on any system
running Caché must be "unlimited".
This correction does two things. First, Caché now checks that
the RLIMIT_FSIZE hard limit is unlimited, and halts the Caché
startup (or installation) with an error message if not. Second, it
sets the soft limit to the hard limit in the daemons.
See the operating system documentation for each platform for a
discussion of how to set the system hard limit for RLIMIT_FSIZE.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP763
Summary: Set current user limits up to the max hard limit in the daemons
Description:
A Caché running with current limit less than
the maximum hard limits for file size could still encounter a serious
i/o error if that limit was less than the size of the cache.dat or
cache.wij files. The current limit is now set to the hard limit for
file size, core dump size, and open files.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SAP870
Summary: Control process crashes after pausing users
Description:
This change fixes a problem where
the control process crashes while validating the 'cache.ids'
file. It happens within a few minutes of pausing the system because
the write daemon is not making progress.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: UNIX
DevKey: SML787
Summary: Stop Private Web Server when Caché is forced down
Description:
Add code to stop the Web server when Caché is forced down on UNIX platform.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML797
Summary: When upgrading, reduce journal life span to 100 if it was greater than 100
Description:
Make sure the journal life span maximum is 100 days when upgrading Caché.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML865
Summary: Don't let write daemon sleep if write daemon is suspended during the pass
Description:
This change fixed a condition where the backup could
take a longer time as expected because write daemon's delay.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System
Platforms: All
DevKey: SML882
Summary: Remove 'Com' value in [Com] section for non-Windows
Description:
This change will remove the 'Com' value in [Com]
section for non-Windows platforms in the .cpf file. This field is only for
Windows platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Cluster Specific
Platforms: All
DevKey: HYY1291
Summary: Fix journal corruption during ECP cluster failover
Description:
This change corrects issues that could cause journal corruption
during ECP cluster failover under certain circumstances.
As a rule of
thumb, if the journal file from the failed cluster node contains big
string data ("big" as defined being 128 or more characters long) or
BITSET records, the current journal file on the cluster node
performing ECP failover may get corrupted.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.I/O
Platforms: All
DevKey: SAP766
Summary: Orphaned process stuck in CLOSH
Description:
The customer regularly gets a orphaned process stuck
in CLOSH status Caché spinning at the AIX level.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1094
Summary: Shorten period of retrying failed journal I/O before disabling journaling
Description:
In the scenario where Caché is configured NOT
to freeze on journal I/O error, journaling will get disabled when
one of the following conditions is met:
- the failed I/O has been tried for a certain period of time;
- journal buffers are full;
- available global buffers falls below a minimum.
Prior to this change, the length of the retry period in condition #1
was set at 10 minutes, longer than the time write daemon would wait (5
minutes by default) for journal synchronization to complete before
declaring WDSTOP (stop the write daemon).
As a result, if neither of the last two conditions was met, the
write daemon would declare WDSTOP before journal daemon disabled
journaling, causing the system to hang for a while (until journal
daemon disabled journaling 5 minutes later).
With this change, the length of the retry period in condition #1 is
set at half of write daemon's wait time, therefore guaranteeing that
journaling would always get disabled before write daemon's wait timed
out, preventing the system from hanging.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1275
Summary: Validate journal file paths properly and allow journal switch to exit as cleanly as possible upon an unexpected error
Description:
This change addresses an issue that could cause system to hang
after a failed journal switch if
- the length of the journal directory
to switch to is within the Caché limit (64 prior to
2007.1),
- but
the length of the full path of the new journal file (journal
directory + journal file prefix (if any) + journal file name in the
form of YYYYMMDD.xxx) exceeds the Caché limit.
It would also
cause buffer overflow with unpredictable result.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1288
Summary: Add an API for purging all journal files except for those required for transaction rollback and crash recovery
Description:
This change adds an API for purging all journal
files except those required for transaction rollbacks or crash
recovery. The method is:
##class(%SYS.Journal.File).PurgeAll()
A crash recovery refers to the journal restore performed as part of Caché startup or cluster failover recovery.
Warning: Post-backup journal files are not necessarily
preserved. Therefore, if you want to be able to restore databases from
backups and subsequent journal files, you should configure the journal
purging parameter based on backups and use regular
purging API (PURGE^JRNUTIL). There is also an API for purging journal
files based on criteria different from what is in the Caché
configuration. See the documentation on the Purge method in the
class, %SYS.Journal.File.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
Yes |
Category: System.Journaling
Platforms: All
DevKey: HYY1301
Summary: Add options to purge journal files to ^JOURNAL
Description:
A front end interface is provided as part of
^JOURNAL for a couple of options to purge journal files, one of which
is to purge all journal files except those required for transaction
rollback or crash recovery.
For example,
%SYS>DO ^JOURNAL
1) Begin Journaling (^JRNSTART)
2) Stop Journaling (^JRNSTOP)
3) Switch Journal File (^JRNSWTCH)
4) Restore Globals From Journal (^JRNRESTO)
5) Display Journal File (^JRNDUMP)
6) Purge Journal Files (PURGE^JOURNAL)
7) Edit Journal Properties (^JRNOPTS)
8) Activate or Deactivate Journal Encryption (ENCRYPT^JOURNAL())
9) Display Journal status (Status^JOURNAL)
Option? 6
1) Purge any journal NOT required for transaction rollback or crash recovery
2) Purge journals based on existing criteria (2 days or 2 backups)
Option? 1
The following files have been purged (listed from latest to oldest):
1. /scratch1/yang/cache/lx4.72u/mgr/journal/20070222.007
1) Begin Journaling (^JRNSTART)
2) Stop Journaling (^JRNSTOP)
3) Switch Journal File (^JRNSWTCH)
4) Restore Globals From Journal (^JRNRESTO)
5) Display Journal File (^JRNDUMP)
6) Purge Journal Files (PURGE^JOURNAL)
7) Edit Journal Properties (^JRNOPTS)
8) Activate or Deactivate Journal Encryption (ENCRYPT^JOURNAL())
9) Display Journal status (Status^JOURNAL)
Option?
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1325
Summary: Abort startup if journal restore couldn't locate next journal file
Description:
This change has two effects:
- Caché startup will be aborted if journal
recovery gets an error locating the next file to restore. Previously,
journal recovery would stop without generating any error and startup
would continue.
- Journal recovery will locate the correct next file in alternate
journal directory even if there is a bad namesake file in the primary
journal directory. The bad file could have been the result of an
incomplete journal switch due to disk error. (Normally, journal switch
would delete the incomplete file if it failed halfway through writing
to it, but there are circumstances where it would be unable to delete
it such as the disk becoming inaccessible.)
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1329
Summary: Freeze journals on <SYSTEM> error in journal switch when requested
Description:
When a Caché system is configured to freeze
on journal errors, the system could be unfrozen by a subsequent
successful journal switch. This is usually the desired behavior
unless the journal error has resulted in the loss of journal data.
In this case, user intervention is necessary to bring the system back to
an appropriate state and until then the system should remain in the
frozen state despite journal switch attempts.
This change enforces the above behavior in the event of possible loss
of journal data resulting from a fatal error in journal switch. If
such an error occurs, a message will be written to the console log.
Prior to this change, journal switch aborted with a fatal error
<SYSTEM> error would leave behind an incomplete file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1345
Summary: Disable sorting in journal restore on fixed cachetemp max size
Description:
This change addresses various issues that, in
certain circumstances, could cause journal restore to fail, or produce
incorrect result on Caché systems where cachetemp max size is
fixed.
Journal restore at startup or cluster failover were not
affected, nor it was affected by the setting of long string support.
As of this change, sorting in journal restore is disabled if cachetemp
max size is fixed (as opposed to unlimited, or 0).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1352
Summary: Make external journal switch a simple roll to next journal file if there is no journal property change to activate
Description:
With this change, simple journal rollovers, regardless of their issuers, are no longer
logged in journal history global (^%SYS("JOURNAL","HISTORY")). This is
consistent with the behavior of journal daemon.
Journal switches that activate changes to journal property such as
primary and alternate directories are still logged in journal history
global (to facilitate searching for journal files).
All forms of journal switches are still logged in cconsole.log.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1359
Summary: Journal $BITSET with correct old value and bit length
Description:
This change addresses an issue that in certain circumstances
could cause a $BITSET operation within a transaction to be journaled with incorrect
old value and old bit length. This would cause incorrect
values to be restored if the transaction gets rolled back.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: HYY1363
Summary: "Canonicalize" input journal file path of NEXTJRN0^JRNUTIL on Windows
Description:
This change corrects an issue with shadowing where a Windows source
that could cause shadowing to stall if the source journal file path
contains uppercase characters. On the Windows source side, one may
see errors like the following in cconsole.log (and shadow source error
log):
NEXTJRN: -98,'D:\CacheSys\Mgr\Journal\20071221.003' appears to be the
next file of 'D:\CacheSys\Mgr\Journal\20071221.002' but contains a
pointer to a different previous file from
'D:\CacheSys\Mgr\Journal\20071221.002' and thus couldn't be the next
file
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: JO2156
Summary: Prohibit journal switch when WDJRNFREEZE is set in WDSTOP
Description:
An error has been resolved where Caché would
permit switching journal files after an fsync error had occurred when
the system was set to freeze on journal errors.
When an fsync error
occurs journal data has probably been lost so switching journal files
results in resuming a system where the journal files are not
complete. If the system is the server of shadow data, the shadow copy
will probably be missing some sets and/or kills. Restarting
Caché or stopping journaling is the only way to recover
from this situation.
Restarting Caché will ensure that the
shadow server and clients remain synchronized as the server that had
the fsync problem will not have written any database blocks to disk
which do not have their supporting journal records in the journal
file.
Stopping journaling will allow the system to continue running
with a gap in the journal (that is, if it is later restarted, some
information will be missing).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: RJW1278
Summary: Edit journal properties even when journaling is off
Description:
With this change,
^JRNOPTS now permits modification of journal options, even when journaling is stopped.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: RJW1336
Summary: Re-enable formal support for journal prefixes
Description:
Journal file prefixes are again supported by the
configuration utilities. The journal file prefix can be set or
modified using the ^JRNOPTS utility (available from ^JOURNAL), or the
Management Portal -> System Administration -> Configuration
-> Journal Settings page. Any change to the journal file prefix
requires a restart of Caché to become active.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: RJW1343
Summary: Journal restore should "multithread" when all directories are selected
Description:
Journal restore will now use multiple processes on
multi-processor systems when all directories and globals are
selected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Journaling
Platforms: All
DevKey: RJW1418
Summary: Running ^JRNSWTCH can reduce maximum journal size
Description:
A problem has been corrected where running ^JRNSWTCH
could, in rare circumstances, reduce the maximum journal size.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Licensing
Platforms: All
DevKey: RJW1350
Summary: License server keeps the manager's cache.dat file open after shutdown
Description:
The license server has
Caché database files open on UNIX. If it remains running after
a Caché
instance shutdown (as it will if it services multiple instances) the
cache.dat files remain open.
This behavior has been changed so that it now closes all file descriptors
before calling execl() to execute the program or script.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Licensing
Platforms: All
DevKey: RJW1381
Summary: License monitor restarts license server unnecessarily
Description:
It was possible for the license monitor of a
Caché instance to repeatedly attempt to restart the license
server. This would result in hourly messages in cconsole.log noting
the restart. With this change, the restart no longer happens unnecessarily.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Licensing
Platforms: OpenVMS
DevKey: RJW1393
Summary: CLMANAGER-STARTUP.COM creation by ^LMFMON can fail
Description:
The temporary CLMANAGER-STARTUP.COM file created by
^LMFMON to start the license server on OpenVMS is not deleted,
although it is purged. Eventually this can lead to an overflow of the
version number, making it impossible to create a new version of the
file. This leaves error reports in ^SYSLOG.
Any residual versions of
the file are now deleted before attempting to create a new
version.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Licensing
Platforms: All
DevKey: RJW1408
Summary: DDP does not work with Entree license key
Description:
A problem has been corrected that prevented use of DDP networking with an Entree license.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Licensing
Platforms: All
DevKey: RJW1452
Summary: License upgrade does not recognize enforced limit
Description:
A problem is corrected where the adjusted license user limit often
used for Ensemble licenses is not recognized by the license
upgrade procedure.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Licensing
Platforms: All
DevKey: RJW1453
Summary: License queries should not require user privilege
Description:
A problem that caused running license queries in the %SYSTEM.License
class to require write access to the CacheSys database has been
corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML854
Summary: Fix ECP locks stay in ECP server while ECP clients have released them
Description:
This change fixes a problem where an ECP client job owned many ECP
locks and some of them have parent and children relation
(e.g. ^node(1) and ^node(1,2)).
An unlock all (or job termination by
JOBEXAM) could lead to some locks remaining in the ECP server while they are
released in the ECP client.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Lock
Platforms: All
DevKey: SML987
Summary: Fix ECP client lock hang on AMD 64 bit platform due to missing prototype declaration in C codes
Description:
A possible ECP client job could hang on lock command
due to inconsistence of lock table. And this problem exists on Windows
AMD and Linux AMD platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1212
Summary: Enforcing order of updates on shadow
Description:
This change now permits only a single updater for
shadow databases. Prior to this change, the default number of
database updaters was determined based on the numbers of CPUs and
shadow databases. With multiple database updaters, sets and kills are
not necessarily applied in the order they are in the journal
file.
The situation on the shadow systems is as follows:
- one copier, which copies source journal files to the shadow (one per
source cluster node, if the source is a Caché cluster);
- one journal reader, which reads the shadow copies of source journal
files and queues up the sets and kills that need to be applied to
shadow databases;
- one or more prefetchers, which fetches the globals involved in the
queued sets and kills from shadow databases, hopefully before the
database updater does, for optimal performance of database
updater;
- one database updater, which applies the queued sets and kills to
shadow databases.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1242
Summary: Address an issue of cluster shadow dejournaling
Description:
This change addresses an issue where the cluster shadow
dejournaler would not start dejournaling a current shadow journal file
(that is, a file being fetched by one of the cluster shadow copiers)
until there is a journal record in the file with offset >=
196608.
As a result, the cluster shadow could remain out of sync
indefinitely with the source when there is little journal activity.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1280
Summary: Fix a case of possible data loss in the event of suspending a shadow
Description:
This change corrects a situation where, under certain
circumstances (such as when the shadow update daemon falls far behind
the shadow journal read daemon), the shadow may:
- fail to apply one
or more records at or prior to a checkpoint location, and/or
- apply
the record at the checkpoint location incorrectly.
This could happen
only to the last checkpoint created when the shadow is about to
suspend or stop.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1281
Summary: Fixed incorrect cluster shadow suspension
Description:
This change corrects an issue that could have caused a cluster
shadowing to suspend, rather than continuing with other nodes of the
source cluster, when a source node died.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1282
Summary: Allow editing shadow properties when shadow is suspended
Description:
As of this change, one is allowed to modify the properties of a shadow when it is suspended.
However, changes to some properties would
not take effect until certain conditions are met. For example,
- Changes to the "Source event to start at" property would not take
effect until the shadow is stopped and restarted;
- On a cluster shadow, changes to the "Directory to store copied
journals" property does not affect the locations of shadow copies of
the journal files from the existing nodes of the source
cluster. Only journal files from the new nodes of the cluster will be
copied to a subdirectory of the newly specified directory until
the shadow is stopped and restarted.
Care must be taken to ensure that shadow can resume properly if
one chooses to change the address of the source ("Source IP or DNS
name" and/or "Source port #"). The responsibility is on the
user.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1284
Summary: Base default wait in stopping shadow on shadow hang interval and TCP read timeout
Description:
This change corrects an occasional timeout error in stopping a
shadow by making stop wait a bit longer than the shadow hang interval
(default=10) and TCP read timeout (10).
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1328
Summary: Fix a <LIST> error in shadow error logging
Description:
This change corrects an issue that caused an error like
""<LIST>decomposeStatus+16^%occSystem" to be logged in
cconsole.log in place of a real error (or warning) message from shadow
or source server.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: System.Shadowing
Platforms: All
DevKey: HYY1330
Summary: Load-balanced prefetching for shadowing
Description:
This change alters the prefetching algorithm to improve performance of shadow dejournaling.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.Shutdown
Platforms: All
DevKey: SAP723
Summary: Make cforce more error-tolerant
Description:
This change alters the way Caché shutdown and
startup handle cache.ids. If cforce detects processes still running,
it will produce an
error message and run freeids to remove all ipc resources, but it will not
remove cache.ids.
On startup, Caché will detect a shared memory segment marked for deletion and halt.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: RJW1388
Summary: Maintain permissions on CSP.INI during startup
Description:
Permissions on the CSP.ini file in the
<install_directory>/csp/bin/ directory were modified during
Caché startup on UNIX. Now the permissions are
maintained.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: System.StartUp
Platforms: All
DevKey: SAP730
Summary: Problems when starting Caché with a full filesystem
Description:
If startup fails due to an inability to write out the
cache.ids file (for example, the disk is full), then slave write daemons are left
behind, a zero-length cache.ids file is left behind, and shared memory is
not deallocated. This is now corrected.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: CDS996
Summary: Cleanup ^mtemp in %ETN if copy to ^ERRORS fails
Description:
If an error such as <FILEFULL> happens when the error trap routine is
creating the ^ERRORS global entry, Caché will now remove the temporary global
that holds the error information instead of leaving it. This will help
prevent the CACHETEMP database from growing unnecessarily.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML762
Summary: Check subscript-level mapping subscript range when start point follows end point
Description:
This change validates the subscripts a user enters in Management Portal when configuring subscript-level mapping.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML774
Summary: Handle non-full path for DB configuration when current directory is not MGR directory
Description:
This change corrects a startup problem when the current OS directory in not the MGR directory.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML790
Summary: Fix Global Compact gets <SYNTAX> error
Description:
This change corrects an issue where global compact
gets a <SYNTAX> error when the
subscript contains a ':' character.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML795
Summary: Improve namespace re-activation performance
Description:
This change improve the performance for activating namespace configuration when many namespaces are configured.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML813
Summary: Fix CHECK10 and CHECK13 in DBACK routine for 64-bit Big Endian machine
Description:
This change fixed a problem when SWITCH 13 is turned
on the CLRINC^DBACK() would hang. This only occurred on 64-bit Big
Endian platforms. This is fixed in 2007.1 and later, so this is only a
problem for 5.2 and earlier version.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML820
Summary: Return error for parsecfg^STUCNFG() if cfgfile does not exist
Description:
This change fixed a problem when re-activating a
non-exist configuration file. This system may get into a state not
allowing user to login.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML876
Summary: Create correct OsType and Platform for overview in CPF file
Description:
Fixed a problem that when the CPF syntax is
incorrect, Caché will try to regenerate the missing fields on
startup. However when the overview field is also missing, Caché
will replace it with "Windows NT" even though the operating system is
Linux. This causes sequential restarts to fail.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML880
Summary: Don't close principal device in utilities
Description:
This problem fixed an issue that when a process uses
a pipe
for I/O of a Caché session, it could get an unexpected
<ENDOFFILE> error.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML900
Summary: Fix invalid number range in %Library.Prompt.GetArray()
Description:
This change corrects an issue in the ^DATABASE
utility when a user enters
a directory name with '-' at the directory prompt.
Caché does not want to
treat it as a range for directory index. It should be part of the
directory name.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: SML923
Summary: Fix non-MGR current dir cause probelm when reactivate configuration
Description:
This change fixed a problem when the current
directory is not the manager directory, a configuration re-activation
could cause the system prohibit user to login.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1099
Summary: Create ^%SYS("WebServer") nodes correctly
Description:
This change ensures that the following global nodes
are set properly:
- ^%SYS("WebServer","Port")
- ^%SYS("WebServer","Name")
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1146
Summary: Remove DefLoginNSP from old CPF files
Description:
This change removes the cache.cpf parameter DefLoginNSP from version 5.0 and older CPF files as it is no longer used.
This does NOT cause any problems during startup if it is left there, this change just cleans things up.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1162
Summary: Fix $ZU(69) settings being overwritten
Description:
Prior to this change, when a Caché system
starts up under the following circumstances:
- Cluster recovery
- Starting with NOSTU
- Incomplete or failed startup
- Any installation
Caché can start up without reading the CPF file and setting the systems default $ZU(69)
settings. In this case, the system runs with default $ZU(69) settings provided by
the system code; usually, these are 0.
In this situation, ^SHUTDOWN
writes back to the CPF file the current settings of the $ZU(69)
switches which are the system defaults, and not the settings which
came from the CPF file. This will cause parameter settings to be
"lost".
This change recognizes these situations and does not
overwrite the settings in the .cpf file.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1171
Summary: Restore implied namespaces after reactivations
Description:
When a namespace mapping is reactivated, all old namespaces on the
system are removed, before the new map is reactivated. Any implied
namespaces which were created "on the fly" by using ZN to change to
them are also removed by this process. However, since these implied
namespace definitions are not stored in the CPF file, they were not
restored when the new namespace map was created. Thus a user who was
working in an implied namespace when the system underwent a namespace
reactivation, would receive a <NAMESPACE> error.
This change saves all the old implied namespaces which have been
defined, activates the new namespaces, then adds the implied
namespaces back in.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1175
Summary: Allow Backup.General.ExternalThaw to complete without hanging
Description:
This changes adds two new parameters (username and
password) to the methods
ExternalThaw and ExternalFreeze in the class Backup.General.
See the class documentation for details.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1252
Summary: Remove call to %SYS.NOJRN from %ETN
Description:
In previous versions, when an application error was
logged into the error trap using %ET or %ETN, the entries written to
the error global were not journaled. This was so that if the
application was in a transaction, and the transaction was subsequently
rolled back, the error log entries would not get rolled back as well.
This behavior has been changed so that the error global is now
journaled, but is marked as not being part of the application user's
transaction so it will not get rolled back if the user's transaction
is rolled back.
Note that the error global is only journaled if journaling is enabled
for the database it is being written to.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
No |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1257
Summary: ExternalThaw shouldn't erase private globals
Description:
On OpenVMS systems, Backup.General.ExternalThaw called from the
command line would get a Database error and loop forever. The problem
was caused by trying to call the erase_private_globals function. The
thaw routine never initialized the private globals vector, so this
call would fail.
We now skip over this if we are calling Thaw from the command line.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities
Platforms: All
DevKey: STC1274
Summary: Don't allow UnknownUser to log in with wrong password
Description:
If password authentication was enabled for a CSP
app, and Unauthenticated access was disabled, a user could log into
the CSP application if they specified "UnknownUser" as the username,
and then entered anything for a password. This has been fixed to
require the correct password for the "UnknownUser".
This is only a problem in versions 5.1 and 5.2. It has already been
corrected in 2007.1.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities.Configuration
Platforms: All
DevKey: SML892
Summary: Fix Deleting DB could cause missing DB in CPF file
Description:
This change fixed a case where using ^DATABASE or the
Management Portal to delete a Database could cause an error in the Dataset section
in CPF file. The index won't be in consecutive
sequence. When Caché was then started, the Configured database
in the CPF file
won't be mounted.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |
Category: Utilities.Routines
Platforms: All
DevKey: NGA128
Summary: Fix ^%PRIO on UNIX platforms
Description:
^%PRIO now works consistently across all platforms.
| Likelihood |
Low |
| Risk |
Low |
| Ad Hoc |
Yes |
| Enhancement |
No |