GemStone/S 64 Bit 3.2.16 is a new version of the GemStone/S 64 Bit object server. This release include fixes for a number of serious bugs, as well as some new features and improvements.
These release notes provide changes between the previous version of GemStone/S 64 Bit, version 3.2.15, and version 3.2.16. If you are upgrading from a version prior to 3.2.15, review the release notes for each intermediate release to see the full set of changes.
No specific Installation Guide is provided with this release. For details on installing GemStone/S 64 Bit 3.2.16 or upgrading from earlier versions of GemStone/S 64 Bit, see the GemStone/S 64 Bit Installation Guide for v3.2.6 for your platform.
GemStone/S 64 Bit version 3.2.16 is supported on the following platforms:
Note that Ubuntu 12.04 end-of-life is imminent, and that Solaris on SPARC support is being deprecated and will be available for development only. Solaris on x86 will continue to be fully supported.
The following versions of GBS are supported with GemStone/S 64 Bit version 3.2.16.
The GemStone/S 64 Bit v3.2.16 distribution includes VSD version 5.3, while the previous version, v3.2.15, included version 5.1.3. There have a been significant changes in versions 5.2 and 5.3. In particular, 5.2 improves support for working with multiple files, and v5.3 contains important changes in managing the VSD configuration and in monitoring.
For details on the changes, see the release notes for versions 5.2 and 5.3, accessible at gemtalksystems.com/products/vsd/versions/.
For some time, GemStone distributions on certain platforms have included a limited starter keyfile, intended primarily for use with Seaside/GLASS/GsDevKit applications and therefore located under the $GEMSTONE/seaside directory. These keyfiles are suitable for evaluation.
In v3.2.16, on Linux and Darwin, the GemStone distribution includes a starter keyfile under $GEMSTONE/sys, with the name community.starter.key. If there is no keyfile at the location $GEMSTONE/sys/gemstone.key, then the stone will look for a keyfile $GEMSTONE/sys/community.starter.key and use that for startup.
If the configuration parameter KEYFILE refers to an invalid file, or a file other than $GEMSTONE/sys/gemstone.key that does not exist, then the stone will not use the starter keyfile and will fail to start.
Note that the starter keyfile does not have permissions for GBS, GemConnect, or GBJ; if you set up a new installation and do not set your license keyfile, the stone will now start rather than failing with an error. Operations such as attempting to login from GBS, for example, will fail.
The keyfile that is distributed under the seaside directory continues to be included in the distribution in the old location on Linux and Macintosh, in addition to the new keyfile.
When the stone recovers after an unexpected shutdown, and there is a large number of commit records to process, it can delay making the stone available for users for a significant period of time.
In this release, the way recovery from a commit record backlog is handled on startup has been modified to reduce this delay. Now, while some critical work is done during the initial recovery and startup, the final commit record processing and disposal is now done in the background, after the stone is available to users.
The startup messages in the stone log under these circumstances have been updated to log the new behavior.
When a GCI protocol error occurs, GemStone will now print the recent GCI calls and associated packets to allow diagnosis.
The configuration parameter STN_GEM_TIMEOUT is designed to terminate gems that have had no interaction with the stone for some period of time. There was a logic error that prevented the check from running, with the result that idle gems were not terminated. (#46723)
When the repository’s oop number high water mark exceeded 4 billion, a number of operations that scan the entire repository, including backup, restore, MFC and write set union sweep as well as multithreaded scan operations, could hang. (#46252).
There was an optimization in the multithreaded MFC that performed a recursion; it was possible for excessive recursion to occur which resulted in running out of C stack space. This optimization was determined to provide very little value and has been removed. (#46194)
Each host with a GemStone server node finds or creates a file /opt/gemstone/locks/gemstone.hostid to identify the host. If this file existed, but was not readable by a process such as linked topaz, the process hung. (#46219)
If an object is in an IdentityBag or IdentitySet with more than about 1015 or 2030 elements, respectively, a listReferences: or fastListReferences: operation did not detect the reference. (#46645)
When a large object is modified, changes to leaf objects composing it must be tranlogged. In the case of byte objects (such as Strings), insert operations did not correctly log the changes, so after restore the state could be inconsistent. (#46474)
When changeClassTo: is requested, and the number of named instance variables is fewer than that of the original class, the values in the removed named instance variable slots may be moved to unnamed instance variables. This caused object corruption for instances of IdentityBag, and data corruption for instances of IdentitySet. (#46475 )
Encryption methods such as aesEncryptWith256BitKey: require specific sizes for the key and salt. If an incorrect salt size was provided, it crashed. (#46358)
gslist -m reports information on remote servers; however, it incorrectly only reported information on NetLDI processes, omitting information on Stone and other processes. (#46262).
Some instance variables are unsafe to access directly due to the way they are stored in memory. These accesses are protected; however, instVarAt: was not reimplemented to provide safe access. This method has been added to GsNMethod. (#46405)
When the Gem is almost out of memory it signals an Admonition, #6013, AlmostOutOfMemory/ #rtErrSignalAlmostOutOfMemory. This can be handled, the cause of the out of memory corrected, and processing resumed. To avoid getting stuck when no memory can be freed, after two unsuccessful attempts it will now signal an Error, #2517, #errAlmostOomPending. (#44514)
The code for GsQuery reject: included a bug and returned the wrong results. (#46184)
Rather than returning the results of the ifNone: block, on a negative result it returned the query. (#46184)
After additions of GLASS/Seaside/GsDevKit class NumberParserGsDevKitIssue75Test, the upgradeSeasideImage step failed. (#46217)