One embodiment of the present invention provides a system that supports multiple
versions of highly available objects. A highly available object is a primary object
and one or more secondary objects. In an environment supporting multiple versions,
the client, the primary, and the secondary objects can each be running either old
or new software. Highly available objects introduce a need to process checkpoints
where the primary and each of the secondary objects can be at different software
versions. In one such situation, the system receives a change to a new version
primary object at a node running new version primary software. Next, the system
creates a new version checkpoint from this change and distributes the new version
checkpoint to nodes executing new version software. The system also translates
the new version checkpoint into an old version checkpoint and distributes this
old version checkpoint to nodes executing old version software. Note that system
can similarly handle an invocation retry where the newly promoted primary object
can be an older or newer version.