GemStone/S 64 Bitâ„¢ 3.4.1 is a new version of the GemStone/S 64 Bit object server. This release includes some new features and fixes a number of bugs. We recommend everyone using or planning to use GemStone/S 64 Bit upgrade to this new version.
These release notes describe changes between the previous version of GemStone/S 64 Bit, version 3.4, and version 3.4.1. If you are upgrading from a version prior to 3.4, review the release notes for each intermediate release to see the full set of changes. Particularly note that there were many changes in v3.4, including the requirement for updated keyfiles and GBS upgrade.
The Installation Guide has not been updated for this release. For installation, upgrade and conversion instructions, use the Installation Guide for version 3.4.
GemStone/S 64 Bit version 3.4.1 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.4 Installation Guide for that platform.
OS vendors have begun rolling out patches to these chip vulnerabilities as v3.4.1 has been in final QA. Testing results indicate that while there are no operational problems, there is a performance impact in line with industry reports for these patches. The specific impact varies depending on the specific GemStone operation and details of the hardware and virtualization of the test system.
v3.4.1 has been tested on Red Hat 6.x and 7.x with the latest security patches, and is fully supported with these configurations.
The version of OpenSSL has been updated to v1.1.0g.
The file /opt/gemstone/locks/<stoneName><hostid> is no longer created. A shrpcmonitor now creates only one file, /opt/gemstone/locks/<stoneName>~<hostid>.LCK, to represent both its listening socket and its shared memory segment.
The new Apple File System, apfs, is now recognized and handled by GemStone, allowing support for the High Sierra Mac version.
New methods have been added that can promote an existing GsSocket to a GsSecureSocket without losing an existing socket connection. The socket connection is transferred from the GsSocket to the GsSecureSocket, which enables STARTTLS behavior.
The following methods have been added to support this functionality:
GsSecureSocket class >> newServerFromGsSocket: aGsSocket
Creates a new instance and initializes it to act as an SSL server socket. Any existing (non-SSL) connection owned by aGsSocket is transferred to the new instance and aGsSocket is effectively closed. No SSL connection is made.
GsSecureSocket class >> newClientFromGsSocket: aGsSocket
Creates a new instance and initializes it to act as an SSL client socket. Any existing (non-SSL) connection owned by aGsSocket is transferred to the new instance and aGsSocket is effectively closed. No SSL connection is made.
The performance of GsFile flush for a file accessed over NFS could be very slow. The method GsFile >> sync has been added, which invokes UNIX fflush and fsync.
When an RC retry failure occurs, it previously only provided a #'Rc-Write-Write' conflict object. Now, conflict resolution code has the option of including additional information, using the conflict keys:
#'Rc-Retry-Failure-Description'
#'Rc-Retry-Failure-Reason'
The parameter STN_GEM_ABORT_TIMEOUT now configurable in seconds, and the runtime configuration parameter has been renamed.
Previously, this parameter was only configurable in minutes, although internal resolution was in seconds. Now, this can be configured in seconds. This is done by specifying the number of seconds followed by 'seconds', for example, 60seconds. Values without the trailing seconds are interpreted as minutes, for compatibility with previous releases, so a value of 60 is 60 minutes.
The minimum is changed from 1 (that is, 1 minute) to 5seconds.
This configuration parameter made sigAbort handling more aggressive, but did not previously affect lostOT and was not sufficient to manage the CR backlog in cases of very high commit rate. (#47335)
There are code paths that are broken when the configuration parameter GEM_PGSVR_USE_SSL is set to TRUE. There are thread safety issues in the socket code, making the multi-threaded pgsvr end of the ssl connection unreliable (#47275).
When the remote gem configuration parameter GEM_PGSVR_UPDATE_CACHE_ON_READ is set to true, logins from remote gems may encounter the error ’Repository root page is corrupted or contains a disk media defect’. This is related to the requested root page having been flushed from the Stone’s cache. (#47291)
If a Stone or NetLDI from older, 2.x version of GemStone/S is running on a host machine, the v3.4 gslist gets a segmentation fault. (#47234)
When a mid-level cache could not be started, it caused a fatal error in the gem. (#47305)
If a session performs an System >> abortTransaction, when the session is outside of transaction, and many commitRecords behind the current, it will not advance it’s view. (#47344)
In Unicode Comparison Mode, the method GsFile class >> contentsAndTypesOfDirectory: and contentsOfDirectory:, when encountering a directory or file name that included Characters with codePoints over 127, returned instance of Utf8. In Traditional String Mode, the results were corrupt. (#47325)
Now, in Unicode Comparison Mode, these methods return instance of Unicode16, and in Traditional String Mode, the results are a DoubleByteString or String with valid contents.
If a backup file has corruption which prevents certain objects from being restored, the restore would terminate with a non-fatal error depending on the specific problem, and the backup file could not be restored. (#47401)
Rather than allowing the backup to be completely unusable, the restore now tolerates some corrupted records and continues to complete the restore. On completion, the restore reports a new fatal error, BKUP_ERR_RESTORE_FAILURE/4152.
If you encounter this error, it is recommended that you find a non-corrupt backup file to restore. However, if you do not have another backup, you can continue to restore the tranlogs and perform commitRestore. After the commitRestore you should perform an object audit to determine the extent of the problems, and if possible, attempt to repair the issues.
It was possible under certain conditions that sending validatePassword: to a UserProfile could crash the Gem. (#47327)
This was specifically exposed when using the GBS User Tool to change a User’s authentication from UNIX to GemStone. However, note that changing the authentication to GemStone did not work in 3.4, due to bug #47294.
The code to write or read bitmap (.bm) files did not handle UTF8, and DoubleByteStrings or Unicode strings outside the Unicode7 range reported primitive failures or argument errors. (#47395)
If the number of items in an internal per-session remove bag becomes large, that is, contains more than about 2000 items, the remove bag becomes subject to transaction conflicts. Remove bag entries are associated with the session slot that added the object; this required a particular set of circumstances to occur. (#47212)
In some cases unrelated to pstack, the printout "PR_SET_PTRACER returned -1, pstack may fail" appeared. This is now only printed when appropriate, when forking to run pstack. (#47333)
If session methods have been enabled for a user that does not have CodeModification privilege, attempting to browse implementors of any method will trigger a SecurityError. (#47364)
openSSL executables are provided with the GemStone distribution on each platform. On Windows, libraries were missing and the executable would not run. (#47393)
The windows client distribution in v3.4.1 includes additional files:
bin\libcrypto-1_1.x64.dll, .pdb
bin\libssl-1_1-x64.dll, .pdb
bin\openssl.pdb
bin32\libcrypto-1_1.dll, .pdb
bin32\libssl-1_1.dll, .pdb
bin32\openssl.exe, .pdb
Classes may be created and not put into a specific SymbolDictionary by passing in a nil for the inDictionary: argument. The subclass creation methods subclass:... and indexableSubclass:... allowed this, but byteSubclass:... generated an error. (#47403)
There was a bug in the internal code such that when configuring mutual authentication, the method to set CA certificates did not work correctly for client contexts. This did not cause any observed problems, although openSSL documentation indicated this was required. (#47256).
The methods that perform secure restore, are used to restore both encrypted and signed but not encrypted backups. When restoring a signed unencrypted backup, the private key arguments and passphrase are not needed and should be nil. It was previously not an error if these arguments were provided. (#47138)