Skip to content
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

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

aladesawe
Copy link
Contributor

@k8s-ci-robot
Copy link

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 /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

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.

@aladesawe
Copy link
Contributor Author

Pulled from PR

Copy link

codecov bot commented Feb 5, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 68.83%. Comparing base (eb7607b) to head (f312736).
Report is 12 commits behind head on main.

Additional details and impacted files
Files with missing lines Coverage Δ
server/storage/schema/membership.go 59.85% <ø> (ø)

... 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.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update eb7607b...f312736. Read the comment docs.

@ahrtr
Copy link
Member

ahrtr commented Feb 6, 2025

/ok-to-test

Comment on lines 36 to 58
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
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's duplicated to

type MembershipBackend interface {
ClusterVersionBackend
MemberBackend
DowngradeInfoBackend
MustCreateBackendBuckets()
}

Again, the simplest solution is to move it into storage/schema

Copy link
Contributor Author

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

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move.

Copy link
Contributor Author

@aladesawe aladesawe Feb 17, 2025

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

Copy link
Member

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.

Copy link
Member

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.

@aladesawe aladesawe changed the title Create an MembershipBackend interface to fix unexported-return Create a MembershipBackend interface to fix unexported-return Feb 8, 2025
@aladesawe aladesawe force-pushed the server-membership-unexported-return branch from 8755557 to e3086e3 Compare February 17, 2025 05:49
@aladesawe aladesawe force-pushed the server-membership-unexported-return branch from e3086e3 to 8dc493e Compare February 17, 2025 05:52
@aladesawe aladesawe marked this pull request as draft February 17, 2025 05:58
@aladesawe aladesawe force-pushed the server-membership-unexported-return branch from 8dc493e to b45c3e7 Compare February 17, 2025 06:48
@aladesawe aladesawe marked this pull request as ready for review February 17, 2025 06:56
@@ -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 {
Copy link
Member

@ahrtr ahrtr Feb 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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 {

@aladesawe aladesawe changed the title Create a MembershipBackend interface to fix unexported-return Disable revive on NewMembershipBackend to fix unexported-return Feb 19, 2025
@aladesawe aladesawe marked this pull request as draft February 19, 2025 05:58
@aladesawe aladesawe force-pushed the server-membership-unexported-return branch from b45c3e7 to f312736 Compare February 20, 2025 18:31
@aladesawe aladesawe marked this pull request as ready for review February 20, 2025 18:31
Copy link
Member

@ahrtr ahrtr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Thanks

@k8s-ci-robot
Copy link

[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 /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot
Copy link

@aladesawe: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
pull-etcd-coverage-report f312736 link false /test pull-etcd-coverage-report

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.

@aladesawe
Copy link
Contributor Author

/retest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Development

Successfully merging this pull request may close these issues.

3 participants