Bug 46494

GemStone/S 64 Bit

3.3.9, 3.3.8, 3.3.7, 3.3.6, 3.3.5, 3.3.4, 3.3.3, 3.3.1, 3.3, 3.2.15, 3.2.14, 3.2.13, 3.2.12, 3.2.11, 3.2.10, 3.2.9, 3.2.8, 3.2.7, 3.2.6, 3.2.5, 3.2.4, 3.2.3, 3.2.2, 3.2.1, 3.2

AIX only

3.4

Upgrade issues; cannot flexibly manage ICU library version on AIX

GemStone uses the open-source ICU libraries to support sophisticated handling of sorting and collation of strings containing Characters outside of the ASCII range. As the Unicode standard is updated and versioned, the ICU open source libraries are also versioned. This can impact GemStone structures that rely on fixed collation order.

Data structures such as SortedCollections that contain Unicode strings, dictionaries in which the keys are Unicode strings, or has indexes on Unicode strings, may be affected.  In Unicode Comparison Mode, all strings use ICU comparisons and structures including traditional Strings are also affected. Applications that do not use ICU-based comparisons in this way are not impacted, and can use the latest ICU library versions without risk.

Rather than rebuilding affected data structures, upgraded GemStone applications can continue to use the earlier version of the ICU libraries. The distribution for GemStone v3.3.1 and later includes both ICU v51.2 and 54.1, and additional checking is done to ensure that the version of the ICU shared libraries that are loaded into the Gem matches the version of the ICU that was used for collating in the repository.

While on other platforms, GemStone can use repository settings or environment variables to control the specific version of the ICU library that is loaded into the Gem, AIX does not support deferred library loading. This means additional manual work is required on AIX.

Workaround

On AIX, GemStone will load the latest library version; for 3.3.x this is v54.1.  If you do not have any ICU comparisons, before upgrading you can configure your application to use this ICU version by executing as SystemUser:
    Globals at: #IcuLibraryVersion put: '54.1'

ICU library loading is handled automatically on AIX in v3.4 and above. For applications that should continue to use the ICU version 51.2, which was current for GemStone v3.2.x, do the following:

   cd $GEMSTONE/lib ; chmod +w .
   mv libicudata.54.1.so libicudata.54.1.so.save
   ln -s libicudata.51.2.so libicudata.54.1.so
   mv libicui18n.54.1.so libicui18n.54.1.so.save
   ln -s libicui18n.51.2.so libicui18n.54.1.so
   mv libicuuc.54.1.so libicuuc.54.1.so.save
   ln -s libicuuc.51.2.so libicuuc.54.1.so

Note that applications that contain collated Unicode strings from version 3.1.x must rebuild these structures.


Last updated: 10/30/17