Bug 47385

Critical

GemBuilder for Smalltalk/VW

8.3

8.4

Committed method changes may be lost if class option instancesNonPersistent added

Adding the class option #instancesNonPersistent does not create a new version of the class; this is behavior on the GemStone server.

When the #instancesNonPersistent is added to a class's definition, the methods for that class are reverted to the methods that existing the previous time that class had been versioned, regardless of method changes that had been committed meanwhile. This results in the loss of committed method changes.

This is an example of the sequence:
   1. create a new version the class, and commit.
   2. add and modify some methods on the class, and commit.
   3. add #instancesNonPersistent to the class definition (making no other changes) and commit.

All changes made in step 2 are lost.

Workaround

Forcing a new class version, such as by adding an instance variable, avoids problems.  You may wish to add temporary instance variable, commit, then remove that instance variable in the same transaction as adding the class option.

In versions subject to this bug, file out method source before making changes to class options, to be safe.


Last updated: 4/3/18