GemStone/S 64 Bit 3.2.4 is a new version of the GemStone/S 64 Bit object server. This release fixes a number of bugs in v3.2.3; we recommend everyone using or planning to use GemStone/S 64 Bit v3.2.x upgrade to this new version.
These release notes provide changes between the previous version of GemStone/S 64 Bit, version 3.2.3, and version 3.2.4. If you are upgrading from a version prior to 3.2.3, review the release notes for each intermediate release to see the full set of changes. In particular, if you are upgrading from version 2.4.x, note that there were substantial changes in v3.0 that impact your application.
The Installation Guide has not been updated for this release. For installation, upgrade and conversion instructions, use the Installation Guide for version 3.2.
GemStone/S 64 Bit version 3.2.4 is supported on the following platforms:
For more information and detailed requirements for each supported platforms, please refer to the GemStone/S 64 Bit v3.2 Installation Guide for that platform. Note that the Linux Installation Guide does not mention SUSE or recently added versions of Red Hat and Ubuntu. Configuration information is the same as for the other Linux platforms.
The following version of GBS is supported with GemStone/S 64 Bit version 3.2.4. You must use GBS version 7.6.1 or later for VisualWorks, or 5.4.2 or later for VA Smalltalk, with GemStone/S 64 Bit v3.2.4.
The GemStone/S 64 Bit v3.2.4 distribution includes VSD version 4.0. The previous version, v3.2.3, included VSD v3.2 build 34759/60. The full set of VSD changes that affect the v3.2.4 distribution include those in VSD version 3.5 as well as those in VSD v4.0.
This is a summary of these changes:
For more details, see the Release Notes for VSD versions 3.5 and 4,0.
OpenSSL continues to release security advisories. The version of OpenSSL used by GemStone/S 64 Bit v 3.2.4 has accordingly been updated to 1.0.1k.
Previously, operations performed over NFS were considered remote, and disallowed without netldi-brokered communications. Now, the following are allowed:
There are scenarios in which Gem processes encounter page cache faults when the STN_GEM_LOSTOT_TIMEOUT is set to -1. This value indicates that the Stone should retract the Gem’s commit record, but not stop the Gem. This has always entailed a risk that some sleeping Gem would reactive and perform writes to the cache before responding to the signals. (#44866).
As a result of these recently-seen problems, -1 has been disallowed as a setting for STN_GEM_LOSTOT_TIMEOUT. Now, the Gem is always stopped, either immediately if the value is 0, or after the number of seconds configured by STN_GEM_LOSTOT_TIMEOUT.
There are race conditions in handling lostOT that affects remote gems when GEM_PGSVR_UPDATE_CACHE_ON_READ is false. In this case, when the remote gem requires a page that is not in the shared page cache, and reads that page from disk, it may not notice a lostOT timeout that occurred at the same time. (#44818, #44817)
When a remote cache is shutting down (e.g., when there are no clients on that cache), the status changes to REMOTE_CACHE_IN_SHUTDOWN. The page manager did not respond to the instructions to complete shutting down the cache. No other caches could be started on this remote node, since the cache was in shutdown. (#44940)
If a remote cache is in the process of startup on a node, and another gem requires a remote cache on that node, the second gem may hang. (#44970)
While some stone log messages include hostId, IP address, and network name, on other messages only the IP address is included. Now, all messages should include complete information. (#44937)
The message printed in the stone log on remote cache startup now also includes the remote node’s IP address, and the sessionId and processId of the session that initiated the remote cache startup.
Previously, the message was of the form:
Remote cache in startup for hostId NNN node NODENAME timeout SECS
Remote cache in startup on NODENAME , IPAddr , hostId NNN timeout SECS session SID gemProcess PID
The error "remote cache exists, but is IN_SHUTDOWN" was returned for remote cache startup failure as well as during shutdown. Now, separate error messages are returned:
remote cache exists, but has STARTUP_FAILED
remote cache exists, but is IN_SHUTDOWN
The Stone cache statistic RemoteSharedPageCacheCount reported the high water number of remote caches, not the currently active number of remote caches. (#44947)
The ClientPageReads statistic was not updated when GEM_PGSVR_UPDATE_CACHE_ON_READ was FALSE. Now, when a page server reads a page, it updates ClientPageReads, regardless of whether the page is read into the shared page cache or not. (#44782)
To make it easier to track creation of mid level caches, the Stone log will now include a line to indicate when a remote cache becomes a mid-level cache.
Remote cache on hostId NNN node HHH IP ::IPAddr is now a mid-level cache.
A new cache statistic has been added:
RemoteMidLevelCacheCount (Stone)
The number of remote mid level caches attached to this Stone.
When a process dies unexpectedly and the slot in the shared page cache must be recovered, there is a risk of SEGV. (#44904)
When login authentication is done by LDAP or Unix, rather than by GemStone, login failures now do not disable the account. Since responsibility for authentication has been placed on another system, it is not appropriate for GemStone to disable logins. Stone will still print a warning message indicating a number of failed login attempts have occurred, but the account will not be disabled. (#44772)
If a Breakpoint is handled and resumed within Smalltalk code, it may SEGV. (#44848)
Under some circumstances, including block temporary variable assignments, execution of blocks containing legacy Exception handler could behave incorrectly. (#44896)
A SEGV has been seen during error conditions in closing a compressed GemStone file (a backup file). The code has been improved to ensure that the GemStone file close and the gzip close are called exactly once each in both normal and error exits. (#44900)
Previously, SSL was initialized in single-threaded mode, and while multiple reads or writes were protected, a simultaneous read and write to different threads was possible, causing coredump. Now, SSL is initialized in multithreaded mode. (#44857)
Exception floats, such as PlusInfinity, are referenced both in Globals and by class variables within Float class. During upgrade to 3.2.x, the references from Globals become new objects, but the Float class references remain to the previous instances. The objects are equivalent, but not identical. (#44807)
GciLibrary was not correctly reinitialized during upgrade from earlier versions, and referenced the older library name. This caused errors, including failures in ExternalSessions. (#44747)
In sequentially upgraded repositories originating in older versions of GemStone/S 64 Bit or GemStone/S, the upgrade process may leave nil entries at some indexes in SystemRepository. This is expected. However, if you remove a user and specify to migrate the elements in that user's security policy to another UserProfile, the method removeAndCleanup:migrateSecurityPoliciesTo: did not expect nil, and failed. (#44839)
If the OS cannot resolve an incompletely qualified host name, the execution of
GsSocket >> getHostAddressByName: hung. Now, it will try five times before reporting an error (#44815)
If the GcHighWaterMark prevents reclaim, the ReclaimGem may run hot (#44908)
The timestamp returned as part of the SystemRepository restoreStatus command did not use the $GS_CFTIME environment flag; it displayed using the default timestamp format. (#44809)
The NotTranloggedGlobals features was added in 3.0. This feature created problems in interactions with garbage collection as recorded in the transaction logs, which were exposed during restore. While many cases were fixed in v3.2, further more complex restore scenarios have exposed further problems. (#42702, #40383)
There were code paths in restoring tranlogs, in which tracking the tranlogs being generated could have become incorrect, and the system attempted to start a new log with an existing tranlog number and filename. These code paths included optimizations to skip checkpoints under certain conditions, and in certain cases where multiple tranlogs were generated between checkpoints. (#44759)
Changes in v3.2.3 resulted in server client libraries disallowing the use of instances of Symbol as source code to be evaluated (for example, using fwevaluate:). In 3.2.4, you may pass Symbols for evaluation, but they will be converted to Strings before sending to the GCI. (#44777)
GBS special builds include a feature that can prevent traversal results from including the root object, with v3.2.3 and later. These changes required that source strings not be put into the ExportSet; otherwise, there were problems reporting compile errors. This fix was made for RPC sessions in v3.2.3, and for linked sessions in v3.2.4. (#44769)
Support for backup operations on NFS
Page Cache Faults and changes in LostOT handling
STN_GEM_LOSTOT_TIMEOUT now must be zero or greater.
Remote Gem scenarios have risk of page cache faults due to lostOT
Changes related to Remote configurations
Remote caches did not complete shutdown
Remote cache startup may hang if already in startup
Stone log messages with incomplete remote host details
Further details in remote cache startup message
Ambiguous remote cache error messages
RemoteSharedPageCacheCount statistic incorrect
ClientPageReads statistic not always updated
Improved tracking for mid level caches
Page server's ClientPid stat not set correctly
Risk of SEGV on AIX during shared page cache monitor slot recovery
Failed logins no longer disable accounts under LDAP/Unix authentication
Handling a breakpoint within Smalltalk code may SEGV
Block containing legacy Exception handler could get errors
Risk of SEGV when performing GemStone compressed operations
Potential SSL race condition communicating with gem
Upgraded repositories have multiple instances of exceptional floats
GciLibrary incorrect in upgraded repositories
Removing users can fail in sequentially upgraded repositories
GsSocket getHostAddressByName: hung on incomplete host name
Issues with Transaction Log Restore
SystemRepository restoreStatus did not use $GS_CFTIME
Further issues with NotTranloggedGlobals over restore
Restore of tranlogs attempted to create duplicate tranlog
Hot Standby logreceiver failures after disk full
GBS error on symbols as source code to evaluate
GBS special builds have issues with evaluation strings in linked sessions