Bug 40751

GemBuilder for Smalltalk/VW

7.3, 7.2.2, 7.2.1, 7.2

GS64 2.4.4 and later

7.3.1

Incorrect handing of stubbed objects with unconnected classes

In some cases with unconnected classes, attempting to unstub a stubbed
object may encounter the error "Message not understood - instancesAreForwarders".

This bug is exposed by bug 40703, the Singletrip traversal fixes, introduced
the GemStone/S 64 Bit version 2.4.4 server release.

Workaround

Creating class connectors for all classes will avoid this bug.

The following method change in GBS 7.3 fixes the problem:

GbxObjectReplication >> updateTypeOfClientObject
   "Make an existing stub into a replicate or forwarder if appropriate."

   clientObject zzzisStub
      ifTrue:
         [currentReport isHeaderOnly
            ifFalse:
               [self delegate nowExported.   "Server has added to export set if full report"
               clientObject unstubEmptyFromReport: currentReport class: clientClass inSession: session.
               ^self].
         "Class of header-only report may not be mapped if clientObject is an UnknownStub"
         (clientClass ~~ notCachedToken and: [clientClass instancesAreForwarders])
            ifTrue:
               ["Header-only report for stub which needs to become a forwarder
               and be identity clamped."
               "This can happen. If an unknown stub is created from a header-only report
               for an instance of an unmapped class. If the class is later mapped, and the client
               class answers true to #instancesAreForwarders, the class will get added to the class
               clamps. All subsequent reports will then be header-only, and should result in the
               stub becoming a forwarder."
               clientObject asForwarder]]


Last updated: 7/1/10