This chapter describes how to upgrade an existing GemStone/S 64 Bit 3.3.x installation to GemStone/S 64 Bit version 3.4.
For upgrading from GemStone/S 64 Bit versions 3.2.x, 3.1.x, or 3.0.x, which require extra steps such as recompilation, see Upgrading from 3.2x, 3.1.x, or 3.0.x.
For upgrading from GemStone/S 64 Bit 2.4x versions, which require conversion, see Converting from GemStone/S 64 Bit 2.4.x versions.
If you are using GemBuilder for Smalltalk (GBS), you also need to upgrade the client libraries that are used by GBS. You may also need to upgrade your version of GBS; versions of GBS earlier than 8.3 or 5.4.4 are not supported with v3.4. See Chapter 6 for details.
New keyfiles are required with GemStone/S 64 Bit version 3.4; keyfiles for GemStone/S 64 Bit 3.3.x or earlier will not work with v3.4. To acquire a keyfile for version 3.4, email keyfiles@gemtalksystems.com, or contact GemStone Technical Support, preferably providing your existing keyfile.
Keyfiles also manage access to GemConnect and GemBuilder for Java. If you are using these add-on products, you must use a keyfile with the appropriate permissions.
The following list summarizes the steps necessary to perform the upgrade to GemStone/S 64 Bit v3.4.
NOTE
The following instructions use the version number 3.3.6 to refer to the version you are upgrading from, and version number 3.4 indicate the target version you are upgrading to.
Verify that your application does not invoke any methods that were deprecated in previous releases, by enabling error or logging on deprecation in your existing repository. Deprecated methods are subject to removal in major releases; finding them before upgrading allows the deprecation messages to provide replacement instructions.
For details on finding deprecated methods, refer to the Programming Guide for GemStone/S 64 Bit.
File out any modifications or additions you made to GemStone/S 64 Bit kernel class methods. For more information about fileout, see the GemStone/S 64 Bit Topaz Programming Environment.
You will need to carefully compare these changes with GemStone/S 64 Bit 3.4 kernel methods, and refer to the Release Notes for version 3.4 to determine whether your changes are still necessary or appropriate.
CAUTION
Any changes that you have made to the GemStone/S 64 Bit kernel classes will be lost during upgrade; you MUST file these out in order to preserve the changes in version 3.4.
Install GemStone/S 64 Bit 3.4 to a new installation directory, separate from the installation directory for version 3.3.6, as described in Installing GemStone/S 64 Bit Version 3.4.
Configure GemStone/S 64 Bit 3.4 the way you expect to use it — that is, with the appropriate extent locations and sizes.
If you copy the configuration files from your previous version to the version 3.4, be sure to review any changes in configuration parameters to determine if changes are needed.
You should ensure that adequate space is available for extents, transaction logs, and a backup during the upgrade. You must provide space for the extents and transaction logs for both repositories, the old and the new.
Log in to the version 3.3.6 system as a user with OtherPassword privilege, such as DataCurator, and reset the SystemUser password to ‘swordfish’:
topaz 1> printit
(AllUsers userWithId: #SystemUser) password: 'swordfish' .
System commitTransaction.
%
The upgrade script logs in with the SystemUser account and the default password, and resets the password for DataCurator and GcUser.
Log in to the version 3.3.6 system as a user with SessionAccess and SystemControl privileges, such as DataCurator, and halt all user activity on the repository.
topaz 1> printit
System stopUserSessions.
%
You may now shut down the Stone. At the UNIX command line:
% stopstone stone336
where stone336 is the name of the version 3.3.6 stone on this machine. The repository must be cleanly shut down to avoid needing recovery when it is restarted with the new version’s executables.
Set the environment variables required for the upgrade.
% setenv GEMSTONE InstallDir34
% set path = ($GEMSTONE/bin $path)
% setenv upgradeLogDir tempDir
$ GEMSTONE=InstallDir34
$ export GEMSTONE
$ export PATH=$GEMSTONE/bin:$PATH
$ upgradeLogDir=tempDir
$ export upgradeLogDir
where InstallDir34 is the GemStone/S 64 Bit version 3.4 installation and tempDir is a temporary directory for which you have write permission.
NOTE
Use a separate log directory for each repository you convert.
Copy your version 3.3.6 extent files into the location specified by the configuration file option DBF_EXTENT_NAMES:
a. Using a text editor, open the configuration file that the version 3.3.6 repository uses.
b. Locate the last occurrence of the option DBF_EXTENT_NAMES, and note its value, a list of .dbf files.
c. Copy each .dbf file to the noted location in the version 3.4 installation. For example:
% cp InstallDir336/data/extent0.dbf 34location
% cp InstallDir336/data/extent1.dbf 34location
% cp InstallDir336/data/extent2.dbf 34location
where 34location is the location specified by DBF_EXTENT_NAMES in the configuration file that will be used in version 3.4.
Before upgrading, ensure that there are no transaction logs from a previous version of GemStone/S 64 Bit in any of the transaction log locations specified in the configuration file that will be used by version 3.4. Transaction logs from earlier versions are not compatible with version 3.4. If the transaction log directories will be reused for version 3.4, any transaction logs should be deleted or copied elsewhere.
Start the 3.4 Stone on the 3.3.6 extents you just copied:
% startstone stoneName34
Ensure you are in a directory to which you have write permission, and run the upgrade script.
The upgrade is performed by the script upgradeImage. This script has optional switches to specify the stone name and to set to size of the GEM_TEMPOBJ_CACHE_SIZE used for the upgrade process.
upgradeImage [-h] [-c <cacheSize>] [-s <stoneName>]
-h prints this usage information.
-c <cacheSize> sets the size of the GEM_TEMPOBJ_CACHE_SIZE; if this is not
used, the script will default to use a value of 100000.
-s <stoneName> sets the name of the running stone to upgrade; if this option is
not used, the script will default to gs64stone.
% upgradeImage -s stoneName34
The script will prompt you to press the return key to begin.
The script invokes subordinate scripts to complete the upgrade. The upgrade process will take some time. You can examine the progress, if desired, by examining the file $GEMSTONE/upgradeImage.out.
The script should complete with the message:
Upgrade completed. No errors detected.
If not, please preserve the Stone log file and the contents of $upgradeLogDir. Contact your internal GemStone support person or GemStone Technical Support.
Log in to GemStone/S 64 Bit version 3.4 as DataCurator or SystemUser, and change the password for SystemUser, DataCurator, and GcUser to a secure password, such as the passwords used for these accounts in v3.3.6. For example:
topaz 1> printit
(AllUsers userWithId: 'SystemUser') password: '336Password'.
(AllUsers userWithId: 'GcUser') password: '336Password'.
(AllUsers userWithId: 'DataCurator') password: '336Password'.
System commitTransaction
%
where 336Password is the account password used in version 3.3.6.
If you are using the Open-source Development Kit for GemStone/S 64 Bit (GsDevKit, previously referred to as Seaside or GLASS), you will need to perform another step to upgrade your GsDevKit image. This step upgrades the GsDevKit base code, and you will also need to reload your application code.
For details, see Upgrading GsDevKit Applications.
When you have completed the GsDevKit upgrade, continue with the upgrade process and perform the following steps.
If you use GemConnect or GemBuilder for Java, you must reinstall the appropriate version of these products into your repository at this time.
To install, use the procedure in the Installation Guide for that product.
If you have modified any kernel class methods of the previous version or if you have added methods to kernel classes, carefully compare your changes with the changes in version 3.4 to see whether your changes are still necessary or appropriate. Carefully review the Release Notes for each intervening version, as well as examining code in the image.
If the kernel class changes are still applicable, file in the changes, verify that errorcount is 0, and commit.
If the repository has been progressively upgraded through any 3.1.x version, and contains data structures that were built in v3.1.x that depend on ICU collation order or encoding (that is, they involve Unicode strings, or traditional strings if the repository is in Unicode Comparison Mode, including GsDevKit application), then these collections need to be sorted and indexes rebuilt to avoid the (small) risk of lookup failures. If resort/rebuilt has been done in 3.2.x or 3.3.x it does not need to be done again.
The ICU libraries that provide Unicode based collation are versioned as the Unicode standard changes. Since most changes in the standard are not important for most applications, by default applications continue to use their original version of ICU library (either the version in which the repository originated, or as determined during upgrade). However, 3.1.x applications used a much older ICU version and cannot be handled automatically.
The version of the ICU shared libraries that will be loaded by session is defined by the global IcuLibraryVersion. The IcuLibraryVersion after upgrade will be the same as an existing value of IcuLibraryVersion before upgrade, and if that key is not present, it is determined based on the originating GemStone version.
If you are using GBS clients, ensure you are running a supported version of GBS and client Smalltalk. You must use GBS version 8.3 or later for VW, or GBS 5.4.4 or later for VA, to connect to a GemStone/S 64 Bit v3.4 repository.
Configure GBS to use the version 3.4 client libraries. Depending on the GBS version you are upgrading from, the required libraries, library naming conventions, and the process GBS uses to identify the correct library to load may have changed.
See Configuring GBS for GemStone/S 64 Bit for details. If your GBS clients run on a different platform than your GemStone server, refer to the Installation Guide for that platform.