-
Notifications
You must be signed in to change notification settings - Fork 9.8k
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
Add function to create WAL files #18605
Add function to create WAL files #18605
Conversation
Hi @lucasrod16. 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. |
Codecov ReportAttention: Patch coverage is
❗ Your organization needs to install the Codecov GitHub app to enable full functionality. Additional details and impacted files
... and 20 files with indirect coverage changes @@ Coverage Diff @@
## main #18605 +/- ##
==========================================
- Coverage 68.79% 68.76% -0.04%
==========================================
Files 420 420
Lines 35522 35535 +13
==========================================
- Hits 24438 24434 -4
- Misses 9657 9669 +12
- Partials 1427 1432 +5 Continue to review full report in Codecov by Sentry.
|
c2852b2
to
d0cd63a
Compare
server/storage/wal/wal_test.go
Outdated
{ | ||
name: "creating standard file should succeed", | ||
fileType: &os.File{}, | ||
}, | ||
{ | ||
name: "creating locked file should succeed", | ||
fileType: &fileutil.LockedFile{}, | ||
}, | ||
{ | ||
name: "creating standard file with truncate should succeed", | ||
fileType: &os.File{}, | ||
truncate: true, | ||
}, | ||
{ | ||
name: "creating locked file with truncate should succeed", | ||
fileType: &fileutil.LockedFile{}, | ||
truncate: true, | ||
}, |
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.
can you also add two cases to verify the following two cases?
- truncate:
true
, it should truncate the file content if present - truncate:
false
: it shouldn't truncate the file content if present
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.
Added test cases to verify truncate behavior
server/storage/wal/wal.go
Outdated
// To create a locked file, use *fileutil.LockedFile type parameter. | ||
// To create a standard file, use *os.File type parameter. | ||
// If truncate is true, the file will be truncated if it already exists. | ||
func createNewWALFile[T *os.File | *fileutil.LockedFile](path string, truncate bool) (T, error) { |
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.
truncate
is imperative name, while forceNew
is declarative name.
func createNewWALFile[T *os.File | *fileutil.LockedFile](path string, truncate bool) (T, error) { | |
func createNewWALFile[T *os.File | *fileutil.LockedFile](path string, forceNew bool) (T, error) { |
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.
Updated to use declarative name forceNew
/ok-to-test |
d0cd63a
to
61989a0
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.
Awesome work, nice use of generics.
case *os.File: | ||
f, err = createNewWALFile[*os.File](p, tt.forceNew) | ||
require.IsType(t, &os.File{}, f) | ||
case *fileutil.LockedFile: | ||
f, err = createNewWALFile[*fileutil.LockedFile](p, tt.forceNew) | ||
require.IsType(t, &fileutil.LockedFile{}, f) |
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.
case *os.File: | |
f, err = createNewWALFile[*os.File](p, tt.forceNew) | |
require.IsType(t, &os.File{}, f) | |
case *fileutil.LockedFile: | |
f, err = createNewWALFile[*fileutil.LockedFile](p, tt.forceNew) | |
require.IsType(t, &fileutil.LockedFile{}, f) | |
case *os.File: | |
f, err = createNewWALFile[*os.File](p, tt.forceNew) | |
require.IsType(t, &os.File{}, f) | |
case *fileutil.LockedFile: | |
f, err = createNewWALFile[*fileutil.LockedFile](p, tt.forceNew) | |
require.IsType(t, &fileutil.LockedFile{}, f) | |
default: | |
panic("unknown file type") |
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.
Added a default case to handle unknown file types. Good catch on handling that scenario
Signed-off-by: Lucas Rodriguez <lucas.rodriguez9616@gmail.com>
61989a0
to
680eadf
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
Nice work!
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: ahrtr, lucasrod16, serathius 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 |
Relates to #18574 (comment)
This PR adds a new function to consolidate WAL file creation into a single function to help reduce errors and make the process more consistent.