1. GemStone/S 6.7 Release Notes

Overview

GemStone/S 6.7 is a new version of the GemStone/S object server. This release includes feature enhancements and fixes for a number of bugs.

These release notes provide changes between the previous version of GemStone/S, version 6.6.5, and version 6.7. If you are upgrading from a version prior to 6.6.5, review the release notes for each intermediate release to see the full set of changes.

Customers on 32-bit GemStone/S are encouraged to consider migrating to GemStone/S 64 Bit, for additional scalability and reliability as well as many important new and enhanced features.

For details about installing GemStone/S 6.7 or upgrading from earlier versions of GemStone/S, see the GemStone/S Installation Guide for version 6.7.

Supported Platforms and GBS Versions

Platforms

GemStone/S version 6.7 is supported on the following platforms:

  • Solaris 10 and 11 on SPARC
  • AIX 6.1 and 7.1
  • Red Hat Linux ES 6.5
  • Windows 7 and Windows 2008 R2

For more information and detailed requirements for each supported platforms, please refer to the GemStone/S v6.7 Installation Guide for that platform.

Note that the build platform for Window has been updated, since XP has become End-of-Life with Microsoft. You must use Windows 2008 or Windows 7 or later to run GemStone/S server or GBS clients.

Also note that GemStone/S is now built and tested on 64-bit Linux. The distribution filename has changed to reflect this.

GBS version summary

The following versions of GBS are supported with GemStone/S version 6.7, with the following client Smalltalk and platforms versions.

GBS version 7.6.1

VW 7.10.1

VW 7.9.1

  • Windows 7 and Windows 2008 R2
  • Solaris 10 on SPARC
  • RedHat Linux ES 6.5
  • Windows 7 and Windows 2008 R2
  • Solaris 10 on SPARC
  • RedHat Linux ES 6.5
GBS version 5.2.7

VA Smalltalk 8.6

VA Smalltalk 8.5.2

VA Smalltalk 8.0.2

  • Windows 7 and
    Windows 2008 R2
  • Windows 7 and
    Windows 2008 R2
  • Windows 7 and
    Windows 2008 R2

GemConnect

Released GemConnect shared libraries will not load into GemStone/S version 6.7 on Solaris and AIX; shared libraries previously supplied for 6.6.4 will load. On these platforms, if you have not obtained new shared GemConnect libraries, please contact GemTalk Technical Support for recompiled libraries. (#43362, #43363)

Other platforms are not affected.

VSD Version

Since v6.6.5, there have been many changes in how VSD is managed. VSD is now distributed as a separate product with separate version numbers and separate documentation, as well as included with GemStone/S distributions.

The GemStone/S v6.7 distribution includes VSD version 5.1. This version of VSD has updated TCL and other libraries, and has been completely rebuilt for Windows.

The VSD distributions is also now included with the GemStone/S distribution on Windows.

For Documentation, and Release Notes that include recent changes, see https://gemtalksystems.com/products/vsd.

Changes in this Release

Updated build and supported platforms

The supported platforms for 6.7 have been updated.

In particular, Windows has been updated, as Windows XP has reached End of Life with Microsoft. Now, you must run GemStone/S server 6.7 or clients on Windows 2008 R2 or Windows 7 or later. Compilers used for User Actions and GCI applications have also been updated.

Also, the Linux build and test platform is now 64-bit Linux. This is reflected in the distribution filename.

Distribution changes

  • Windows distributions now include VSD executables and supporting files.
  • Distributions now include the /bin64 directory, containing files for 64-bit VSD.
  • The Linux distribution filename OS platform has changed from i686 to x86_64.
  • The directory $GEMSTONE/bin/obsolete is no longer included in the distribution.

Updated Libraries

  • The libraries used by VSD have been updated.
  • The Zlib library has been updated to v1.2.8.

Zoneinfo files updated

GemStone includes a distribution of the tz or zoneinfo Time Zone database, under $GEMSTONE/pub/timezone. The version distributed has been updated to version 2015d.

For the latest versions, see http://www.iana.org/time-zones.

Note that Linux and Solaris systems normally have this Time Zone Database installed as part of the operating system, and many methods in GemStone TimeZone classes will use the OS version by default on these platforms.

Build numbers included in version.txt and headers

To precisely identify individual builds of a particular version, the build number is now included in $GEMSTONE/version.txt, and a line is added to process log headers. This is primarily important for distinguishing Beta, Early Access, and Release versions.

New option for Stone tmpstart on Windows

Starting the Stone on Windows can be done as a service (stone create/stone start), or by startstone, which uses the stone tmpstart utility.

In Windows Vista and later, security changes require starting the stone as a service to be done using "Run as Administrator"; this is unchanged from previous versions.

Starting the stone not as a service, using startstone, can be using "Run as Administrator", or by a user with the SeCreateGlobal privilege.

An additional option for starting the stone not as service has been added, using the new environment variable GS_MAKE_EVENTS_LOCAL.

GS_MAKE_EVENTS_LOCAL turns off the internal addition of the "Globals:\ prefix to Windows events. When the Stone is started with this environment variable set to 1, all logins to the stone must also have this environment variable set. This allows non-administrator users to start the Stone.

Programmatic access to system statistics

On most platforms, you can now access OS-level system statistics from GemStone Smalltalk. This is the same information collected by statmonitor.

System class >> fetchSystemStatNames
Return an array of Strings which describe the statistics returned by the #fetchSystemStats method. The length of the result array is host technology dependent, and can be determined by System >> fetchSystemStatCount. Returns nil if the host system does not support system statistics.

System class >> fetchSystemStats
Return an array of Numbers with the statistics specified in the #fetchSystemStatNames method. The length of the result array is host technology dependent. While most elements in the result array will be SmallIntegers, the result may also contain other types of Numbers such as SmallDoubles, Floats, LargePositiveIntegers, etc. Returns nil if the host system does not support system statistics.

System class >> fetchSystemStatCount
Returns the number of host system statistics available for the host system, or zero if host statistics are not supported for this system.

Bugs Fixed

ZFS not recognized as local file system

GemStone operations such as restoring from transaction log could fail if the file was on a ZFS file system; ZFS was not recognized as a local filesystem. (#45868)

Stone startup failure timeout too long on Windows

On Windows, if the cache cannot be started, the SPC monitor fails immediately, but the startup failure is not reported to the user until a 90 second timeout has elapsed. (#45870)

GsFile contentsOfDirectory: can fail to find entries on NFS file servers

GsFile contentsOfDirectory: can fail to find entries on NFS file servers when these send back offsets that overflow a 32-bit field, due to limitations in the readdir( ) call used. (#45786)

cleaupDeadSymbols may miss noncanonical symbols

There was a code path in which noncanonical symbols were not caught and repaired by cleanupDeadSymbols. (#44748)

Cache Statistics Changes

As part of the platform updates with version 6.7, the platform-level system statistics that statmonitor collects have been updated on Solaris, Linux, and Windows.

Changes to Solaris System and Process Statistics

Added Per-process Statistics for all GemStone process types

HeapKBytes
The size of the process's heap in kilobytes.

StackKBytes
The size of the process's stack in kilobytes.

Add System statistics

AckedBytes
The total number of bytes acknowledged by received TCP ack segments.

AcksForUnsentData
The total number of acknowledgment TCP segments received for unsent data.

AcksReceived
The total number of acknowledgment TCP segments received.

AcksSent
The total number of acknowledgment TCP segments sent.

ConnectionFailures
The total number of times TCP connections failed to be established. At the lowest level this means that they have made a direct transition to the CLOSED state from the SYN-SENT state or the SYN-RCVD state, or a direct transition to the LISTEN state from the SYN-RCVD state.

ConnectionsActive
The total number of times a client socket has explicitly connected to a listening server socket. At the lowest level this means that a socket has made a direct transition to the SYN-SENT state from the CLOSED state.

ConnectionsEstablished
Current number of established TCP socket connections on the machine. At the lowest leve this means that a socket's current state is either ESTABLISHED or CLOSE-WAIT.

ConnectionsPassive
The total number of times a listening server socket has accepted a connection from a client. At the lowest level this means that a socket has made a direct transition to the SYN-RCVD state from the LISTEN state.

ConnectionsReset
The total number of times established TCP connections have been closed. At the lowest level this means a direct transition to the CLOSED state from either the ESTABLISHED state or the CLOSE-WAIT state.

ControlSegmentsSent
The total number of control (syn, fin, rst) TCP segments sent.

DelayedAcksSent
The total number of delayed acknowledgment TCP segments sent.

DuplicateAcks
The total number of duplicate acknowledgment TCP segments received.

HalfOpenDrops
The total number of half open connections dropped. Non-zero values usually indicate a SYN flood attack.

HalfOpenQueueFull
The total number of connection refused due to the help open listen queue (q0) being full.

KeepAliveDrops
The connections dropped due to the failure of a keep alive probe.

KeepAliveProbes
The total number of times a probe needed to be sent out due to a keep alive timer expiring.

KeepAliveTimeouts
The total number of keep alive timeouts.

ListenQueueFull
The total number of connections refused due to a listen queue being full.

ReceivedDuplicateBytes
The total number of TCP data bytes received in duplicate segments. Incoming data may be duplicated when an acknowledgment is lost or delayed and the other end retransmits a segment that actually arrived correctly the first time. This situation can be a sign that the remote systems are retransmitting too quickly and needs tuning or a patch.

ReceivedInorderBytes
The total number of TCP data bytes received in the correct order.

ReceivedOutOfOrderBytes
The total number of TCP data bytes received in the wrong order.

If this value is high compared to ReceivedInorderBytes then it could be a sign of routing problems.

ReceivedPartialDuplicateBytes
The total number of TCP data bytes received in partially duplicated segments. Incoming data may be duplicated when an acknowledgment is lost or delayed and the other end retransmits a segment that actually arrived correctly the first time. This situation can be a sign that the remote systems are retransmitting too quickly and needs tuning or a patch.

RetransmittedTcpBytes
The total number of bytes resent in TCP data segments. If this value is more than 30% of SentTcpBytes, you may have some bad network hardware, a congested route that is dropping packets, or an operating system that needs a patch.

RetransmitTimeoutDrops
The total number of connections dropped due to a retransmit timeout.

RetransmitTimeouts
The total number of TCP retransmit timeouts.

Segments
The total number of TCP segments that have been sent or received using the TCP protocol.

SegmentsReceived
The total number of TCP segments that have been received, including those received in error. This count includes segments received on currently established connections.

SegmentsRetransmitted
The total number of retransmitted TCP segments, that is, segments transmitted containing one or more previously transmitted bytes. If this value is more than 30% of SegmentsSent, you may have some bad network hardware, a congested route that is dropping packets, or an operating system that needs a patch.

SegmentsSent
The total number of TCP segments that are sent, including those on current connections, but excluding those containing only retransmitted bytes.

SentTcpBytes
The total number of bytes sent in TCP data segments.

Removed statstics

IOPages

Changes to Linux System and Process Statistics

Added Per-process Statistics for all GemStone process types

IVolCSW
The number of times the process was forced to do a context switch.

MaxImageSize
The maximum (high water) size of the process's image in kilobytes.

MaxRSS
The high water mark of the processes resident set size.

PageTablesMemoryKB
The amount of memory dedicated to low-level page tables.

RSSData
On Linux, the data resident set size. On other platforms, the combined data and stack resident set size.

RSSLib
The library resident set size. Always zero in Linux 2.6 and later.

RSSStack
The stack resident set size.

RSSText
The text resident set size.

ThreadCount
Number of threads currently active in this process. An instruction is the basic unit of execution in a processor, and a thread is the object that executes instructions. Every running process has at least one thread.

VolCSW
The number of voluntary context switches done by the process.

Added System Statistics

ActiveAnonMemoryKB
The amount of non-file backed memory that has been used more recently.

ActiveFileMemoryKB
The amount of memory used for buffering files that has been used recently.

ActiveMemoryKB
The amount of memory that has been used more recently and usually not reclaimed unless absolutely necessary.

AnonHugePagesKB
The amount of non-file back memory backed by huge memory pages.

AnonymousMemoryKB
The amount of non-file backed memory mapped into userspace page tables.

BounceMemoryKB
The amount of memory used for bounce buffers for block devices.

CachedMemoryKB
The amount of memory used as cache memory.

CachedSwapKB
The amount of swap used as cache memory.

CommitLimitKB
The total amount of memory currently available to be allocated on the system.

CommittedAsKB
The amount of memory presently allocated on the system, including memory allocated by processes that has not yet been used. Linux statistic name: Committed_AS

FileBufferSizeKB
The amount of memory used in file buffers.

HardwareCorrupted
A boolean indicating if the system has detected a memory failure.

HugePagesFreeKB
The amount of memory in the huge pages pool that has not yet been allocated.

HugePageSizeKB
The size of a huge memory page in kilobytes.

HugePagesRsvdKB
The amount of memory in the huge pages pool for which a commitment to allocate from the pool has been made, but no allocation has yet been made.

HugePagesSurpKB
The amount of memory in the huge pages pool above the value in /proc/sys/vm/nr_hugepages.

HugePagesTotalKB
The total amount of memory in the huge pages pool.

InactiveAnonMemoryKB
The amount of non-file backed memory that has not been used recently.

InactiveFileMemoryKB
The amount of memory used for buffering files that has not been used recently.

InactiveMemoryKB
The amount of memory which has been less recently used. It is more eligible to be reclaimed for other purposes.

KernelDataMemoryKB
The amount of memory used by the kernel for caching data structures.

KernelDataReclaimableMemoryKB
The amount of memory used by the kernel for caching data structures that may be reclaimed.

KernelDataUnreclaimableMemoryKB
The amount of memory used by the kernel for caching data structures that cannot be reclaimed.

KernelStackMemoryKB
The amount of memory used by the kernel stack.

LockedMemoryKB
The amont of memory that has been locked using mlock(2) or similar calls. Locked memory cannot be swapped.

MappedMemoryKB
The amount of memory which has been mapped to files.

NfsUnstableMemoryKB
The amount of memory used by NFS pages sent to the server, but not yet committed to stable storage.

PageTablesMemoryKB
The amount of memory dedicated to low-level page tables.

SharedMemoryKB
The amount of memory enabled for sharing between multiple processes via shmat(2) and mmap(2) with the MAP_SHARED attribute set.

UnevictableMemoryKB
The amount of memory that cannot be swapped.

WritebackMemoryKB
The amount of memory which is actively being written back to disk.

WritebackTmpMemoryKB
Amount of memory used by FUSE (Filesystem in Userspace) filesystems.

Removed statistics

DataKBytes
LibKBytes
SharedKBytes
TextKBytes

Changes On Windows

Added Per-process Statistics for all GemStone process types

DataIoKb
Combined number of kilobytes read and written by the process.

DataIoOps
Combined number of read and write I/O operations by the process.

OtherIoKb
Number of kilobytes in I/O operations that don't involve data, such as control operations.

OtherIoOps
Number of I/O operations that don't involve data, such as control operations.

ReadIoKb
Number of kilobytes read by the process.

ReadIoOps
Number of read operations by the process.

WorkingSetPrivateKb
Current size in kilobytes of the set of memory pages touched recently by the threads in the process which cannot be shared by other processes.

WriteIoKb
Number of kilobytes written by the process.

WriteIoOps
Number of write operations by the process.

Changes in System-level statistics data types

The data types for statmonitor data have changed in this release; some statistics that were previously collected under NtMemory are now under NtSystem. Some older data types are no longer collected, and new types are included.

Added System-level Statistics

SystemUpTime (NtSystem)
Number of seconds since the host system was started.

Usage (NtPaging File)
The amount of the Page File instance in use in percent. See also PageFileKb.

UsagePeak (NtPaging File)
The peak usage of the Page File instance in percent. See also PageFilePeakKb.

Removed Statistics

PriorityBase
TotalAPCBypasses

TotalDPCBypasses

Moved and Renamed Statistics

PageFileBytes is renamed to PageFileKb

PageFileBytesPeak is renamed to PageFilePeakKb

PoolNonpagedBytes is renamed to PoolNonPagedKb

PoolPagedBytes is renamed to PoolPagedKb

PrivateBytes is renamed to PrivateKb

VirtualBytes is renamed to VirtualKb

VirtualBytesPeak is renamed to VirtualPeakKb

WorkingSet is renamed to WorkingSetKb

WorkingSetPeak is renamed to WorkingSetPeakKb

TotalPoolNonpagedBytes is renamed to TotalPoolNonpagedKBytes

TotalPoolPagedBytes is renamed to TotalPoolPagedKbytes

SystemCacheResidentBytes is renamed to SystemCacheResidentKBytes

SystemCodeResidentBytes is renamed to SystemCodeResidentKBytes

SystemCodeTotalBytes is renamed to SystemCodeTotalKBytes

SystemDriverResidentBytes is renamed to SystemDriverResidentKBytes

SystemDriverTotalBytes is renamed to SystemDriverTotalKBytes

AvailableBytes is renamed to AvailableKBytes

CacheBytes is renamed to CacheKBytes

CacheBytesPeak is renamed to CacheKBytesPeak

CommitLimit is renamed to CommitLimitKBytes

CommittedBytes is renamed to CommittedKBytes

CommittedBytesInUse is renamed to CommittedKBytesInUse

PoolPagedResidentBytes is renamed to PoolPagedResidentKBytes