New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
GEODE_6883: Creating membership api classes #3985
GEODE_6883: Creating membership api classes #3985
Conversation
cd2462d
to
872bd11
Compare
a3eebcb
to
51c1e52
Compare
...tegrationTest/java/org/apache/geode/distributed/internal/membership/MembershipJUnitTest.java
Show resolved
Hide resolved
geode-core/src/main/java/org/apache/geode/cache/server/internal/LoadMonitor.java
Outdated
Show resolved
Hide resolved
...che/geode/distributed/internal/membership/gms/locator/GMSLocatorRecoveryIntegrationTest.java
Show resolved
Hide resolved
geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
Outdated
Show resolved
Hide resolved
geode-core/src/main/java/org/apache/geode/distributed/internal/ClusterDistributionManager.java
Show resolved
Hide resolved
...rc/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipBuilderImpl.java
Outdated
Show resolved
Hide resolved
...rc/main/java/org/apache/geode/distributed/internal/membership/gms/api/MembershipBuilder.java
Show resolved
Hide resolved
geode-core/src/main/java/org/apache/geode/internal/tcp/Connection.java
Outdated
Show resolved
Hide resolved
geode-core/src/main/java/org/apache/geode/internal/tcp/TCPConduit.java
Outdated
Show resolved
Hide resolved
...java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
a couple ideas below…
...re/src/main/java/org/apache/geode/distributed/internal/membership/adapter/ServiceConfig.java
Show resolved
Hide resolved
...re/src/main/java/org/apache/geode/distributed/internal/membership/adapter/ServiceConfig.java
Show resolved
Hide resolved
MembershipManager create(); | ||
|
||
|
||
static MembershipBuilder newMembershipBuilder(ClusterDistributionManager dm) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's generally poor design to have an interface depend on an implementation of the interface.
If MembershipBuilderImpl
is indeed the only implementation we envision, then I recommend we sort of reverse the relationship in the following way:
- rename
MembershipBuilder
to something likeMembershipBuilderInterface
- rename
MembershipBuilderImpl
toMembershipBuilder
- move this method
newMembershipBuilder()
down to what is now called theMembershipBuilder
class
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I agree having newMembershipBuilder()
as part of the interface is somewhat odd. Why not just remove it all together and construct a MembershipBuilderImpl directly where needed? BTW, I think the current naming convention matches what we have for other interfaces/classes, so I'm not sure that needs to change (Cache/CacheImpl, Acceptor/AcceptorImpl, etc).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Based on these suggestions, how about we just get rid of the MembershipBuilder interface entirely and rename the concrete MembershipBuilderImpl class to MembershipBuilder?
...rc/main/java/org/apache/geode/distributed/internal/membership/gms/MembershipBuilderImpl.java
Outdated
Show resolved
Hide resolved
...java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
Outdated
Show resolved
Hide resolved
...java/org/apache/geode/distributed/internal/membership/gms/api/MembershipAPIArchUnitTest.java
Outdated
Show resolved
Hide resolved
Creating a new membership API package. Starting that package out with these classes: * MembershipBuilder - created by moving NetMember and NetLocator factory stuff out of MembershipFactory and renaming MembershipFactory to MembershipBuilder * Membership - Extracted an interface from MembershipManager * Authenticator - Moved Authenticator to the API package * MembershipStatistics - Extracted interface from DMStats * MembershipListener and MessageListener - Creating these new membership specific interfaces by splitting up DistributedMembershipListener into two separate interfaces. * MembershipConfig - Extracted interface from ServiceConfig * Adding an archunit test for the membership API. Ensure that the API only depends on other API classes. * Removing GMSMemberFactory and MemberServices These classes were adding another layer to creating a MembershipManager, but they didn't actually allow swapping in a different implementation. Inlining these methods into the respective NetLocatorFactory, NetMemberFactory, and MembershipManagerFactory. * Removing getDM from DirectChannelListener - We want to get rid of this interface in favor of other membership specific interfaces that don't depend on core.
44ae648
to
27b213e
Compare
geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
Show resolved
Hide resolved
geode-core/src/distributedTest/java/org/apache/geode/distributed/LocatorDUnitTest.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nice - I especially like the separation of membership-listener and message-listener
Creating a new membership API package. Starting that package out with
these classes:
MembershipBuilder - created by moving NetMember and NetLocator factory stuff
out of MembershipFactory and renaming MembershipFactory to MembershipBuilder
Membership - Extracted an interface from MembershipManager
Authenticator - Moved Authenticator to the API package
MembershipStatistics - Extracted interface from DMStats
MembershipListener and MessageListener - Creating these new membership
specific interfaces by splitting up DistributedMembershipListener into two
separate interfaces.
MembershipConfig - Extracted interface from ServiceConfig
Adding an archunit test for the membership API. Ensure that the API only
depends on other API classes.
Removing GMSMemberFactory and MemberServices
These classes were adding another layer to creating a MembershipManager,
but they didn't actually allow swapping in a different implementation.
Inlining these methods into the respective NetLocatorFactory,
NetMemberFactory, and MembershipManagerFactory.
Removing getDM from DirectChannelListener - We want to get rid of this
interface in favor of other membership
specific interfaces that don't depend on core.