geode-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bruce Schuchardt (JIRA)" <>
Subject [jira] [Commented] (GEODE-73) Remove old rolling-upgrade methods and code
Date Thu, 02 Jul 2015 18:28:04 GMT


Bruce Schuchardt commented on GEODE-73:

In the spirit of wanting the largest user-base possible for Geode I want to amend this Jira
based on discussions on the geode-dev mailing list.

While replacement of the 2.2.9 JGroups implementation with a newer version or possibly using
a different clustering solution will break the ability to perform rolling upgrade for servers
it may be that old GemFire clients will be able to use a Geode cluster, especially if packages
aren't renamed from their current com.gemstone.gemfire prefix to org.apache.geode, or if an
SPI is inserted into BaseCommand to allow replacement of org.apache.geode based exceptions
with com.gemstone.gemfire equivalents in writeException() for old clients.

To that end we should only remove the backward compatibility code from DistributionMessage
subclasses and cache operation classes that are accommodating old distributed algorithms (i.e.,

> Remove old rolling-upgrade methods and code
> -------------------------------------------
>                 Key: GEODE-73
>                 URL:
>             Project: Geode
>          Issue Type: Improvement
>    Affects Versions: 1.0.0-incubating
>            Reporter: Bruce Schuchardt
>              Labels: cleanup
> Geode supports rolling upgrade between major and minor versions.  This is a really cool
feature that should be kept up, but there are a lot of serialization methods that are checking
for old versions of GemFire in the code that ought to be removed.  These have the form
> toDataPre_GFE_major_minor_patch_build()
> fromDataPre_GFE_major_minor_patch_build()
> These methods are no longer needed since rolling upgrade isn't going to be possible from
old GemFire processes to Geode.  Also, old GemFire clients won't be supported either due to
the package renaming that needs to take place.
> Aside from these methods there are other places that are checking to see what version
is attached to a DataInput or DataOutput using InternalDataSerializer.getVersionForDataStream[OrNull],
or are using the getVersionObject() method in InternalDistributedMember to make decisions
about how to deal with old GemFire members.  Care needs to be taken here since some uses of
these methods are to set up proper serialization in HeapDataOutputStreams.

This message was sent by Atlassian JIRA

View raw message