-
Notifications
You must be signed in to change notification settings - Fork 9.9k
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
Disable revive on NewMembershipBackend to fix unexported-return #19343
base: main
Are you sure you want to change the base?
Disable revive on NewMembershipBackend to fix unexported-return #19343
Conversation
Hi @aladesawe. Thanks for your PR. I'm waiting for a etcd-io member to verify that this patch is reasonable to test. If it is, they should reply with Once the patch is verified, the new status will be reflected by the I understand the commands that are listed here. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. |
Pulled from PR |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files
... and 26 files with indirect coverage changes @@ Coverage Diff @@
## main #19343 +/- ##
==========================================
- Coverage 68.89% 68.83% -0.06%
==========================================
Files 420 420
Lines 35753 35753
==========================================
- Hits 24632 24611 -21
- Misses 9698 9719 +21
Partials 1423 1423 Continue to review full report in Codecov by Sentry.
|
/ok-to-test |
server/storage/schema/membership.go
Outdated
type MembershipBackend interface { | ||
MustSaveMemberToBackend(m *membership.Member) | ||
TrimClusterFromBackend() error | ||
MustDeleteMemberFromBackend(id types.ID) | ||
MustReadMembersFromBackend() (map[types.ID]*membership.Member, map[types.ID]bool) | ||
TrimMembershipFromBackend() error | ||
MustSaveClusterVersionToBackend(ver *semver.Version) | ||
MustSaveDowngradeToBackend(downgrade *version.DowngradeInfo) | ||
MustCreateBackendBuckets() | ||
ClusterVersionFromBackend() *semver.Version | ||
DowngradeInfoFromBackend() *version.DowngradeInfo | ||
} |
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 duplicated to
etcd/server/etcdserver/api/membership/store.go
Lines 27 to 32 in f1d09c0
type MembershipBackend interface { | |
ClusterVersionBackend | |
MemberBackend | |
DowngradeInfoBackend | |
MustCreateBackendBuckets() | |
} |
Again, the simplest solution is to move it into storage/schema
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.
@ahrtr do we want to import into schema versus moving it to schema? There's been no exported interface definition in schema
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.
Move.
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.
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.
@ahrtr Moving can't be done without a cyclic import; please refer to commit. tldr MembershipBackend is still referenced within the membership package
thx for pointing this out. Unfortunately, this existing design/implementation has some serious flaws. The server/etcdserver/api/*
and server/storage/*
are referencing (depending on) each other.
- Ideally, they shouldn't depend on each other, instead both of them should only depend on the same set of interfaces (abstract).
- The less optimised solution is to apply only one way reference (dependence)
Let me see what I can do.
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.
Unfortunately it needs big refactor to resolve this. So I suggest that we only add // revive:disable-next-line:unexported-return
to ignore it for now. In future (i.e 3.8 or 4.0), when we get rid of v2snapshot, we can revisit it.
8755557
to
e3086e3
Compare
e3086e3
to
8dc493e
Compare
8dc493e
to
b45c3e7
Compare
server/storage/schema/membership.go
Outdated
@@ -37,7 +37,7 @@ type membershipBackend struct { | |||
be backend.Backend | |||
} | |||
|
|||
func NewMembershipBackend(lg *zap.Logger, be backend.Backend) *membershipBackend { | |||
func NewMembershipBackend(lg *zap.Logger, be backend.Backend) membership.MembershipBackend { |
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.
func NewMembershipBackend(lg *zap.Logger, be backend.Backend) membership.MembershipBackend { | |
// Refer to https://github.com/etcd-io/etcd/pull/19343#discussion_r1958056718 | |
// revive:disable-next-line:unexported-return | |
func NewMembershipBackend(lg *zap.Logger, be backend.Backend) *membershipBackend { |
Signed-off-by: adeyemi <[email protected]>
b45c3e7
to
f312736
Compare
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.
LGTM
Thanks
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ahrtr, aladesawe The full list of commands accepted by this bot can be found here. The pull request process is described here
Needs approval from an approver in each of these files:
Approvers can indicate their approval by writing |
@aladesawe: The following test failed, say
Full PR test history. Your PR dashboard. Please help us cut down on flakes by linking to an open issue when you hit one in your PR. Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here. |
/retest |
Please read https://github.com/etcd-io/etcd/blob/main/CONTRIBUTING.md#contribution-flow.