Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
feat: add leadership package #661
base: main
Are you sure you want to change the base?
feat: add leadership package #661
Changes from all commits
96c9f3e
8ed6d5d
0da77e0
4b19017
f39ef3f
935699b
294efc4
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
🛠️ Refactor suggestion
Optimize subscription cleanup.
The unsubscribe function has several areas for improvement:
Consider this improved implementation:
📝 Committable suggestion
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.
🛠️ Refactor suggestion
Prevent blocking on slow consumers.
The current implementation could block if any subscriber is slow to consume messages. Consider using non-blocking sends to prevent this.
📝 Committable suggestion
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.
🛠️ Refactor suggestion
Enhance test coverage.
While the current test covers basic functionality, consider adding tests for:
Here's an example of additional test cases:
Check warning on line 20 in internal/leadership/context.go
Codecov / codecov/patch
internal/leadership/context.go#L19-L20
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.
Define or import the DBHandle type.
The
DBHandle
type is used in the struct but is not defined or imported. This could lead to compilation errors.Please either:
DBHandle
type interface in this package, or🛠️ Refactor suggestion
Avoid embedding sync.Mutex to prevent exposing Lock/Unlock methods.
Embedding
*sync.Mutex
exposes the mutex methods directly, which breaks encapsulation and could lead to incorrect usage. Consider making it a regular field instead.📝 Committable suggestion
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.
🛠️ Refactor suggestion
Add context and error handling support to the Exec method.
The current implementation has several limitations:
Consider this improved implementation:
📝 Committable suggestion
Check warning on line 30 in internal/leadership/locker.go
Codecov / codecov/patch
internal/leadership/locker.go#L29-L30
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.
Handle connection close errors.
The error from
conn.Close()
is consistently ignored. These errors should be wrapped and returned.Also applies to: 40-40, 45-45
Check warning on line 36 in internal/leadership/locker.go
Codecov / codecov/patch
internal/leadership/locker.go#L34-L36
Check warning on line 44 in internal/leadership/locker.go
Codecov / codecov/patch
internal/leadership/locker.go#L40-L44