-
Notifications
You must be signed in to change notification settings - Fork 309
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
daemon: Adds SdNotifyBarrier #343
base: main
Are you sure you want to change the base?
Conversation
It appears an unrelated, unmodified test failed from timeout according to Travis:
|
// | ||
// If `unsetEnvironment` is true, the environment variable `NOTIFY_SOCKET` | ||
// will be unconditionally unset. | ||
// |
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.
Spurious blank line.
This feature has been added quite recently in systemd v246
, so it would be good to mention the minimum requirement here.
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 note about the systemd version.
The extra empty line at the end is a convention used by the go source code itself when a comment has multiple paragraphs. Since gofmt has no opinion on this it falls on you I guess, so I removed it :-)
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.
Ah, I guess I'm up to some learning today. Do you have examples/references of this? Does some godoc renderer rely on this?
@rsms thanks for the patch and the accompanying test! I've left a few comments in review, the only major one about using a |
go func() { | ||
select { | ||
case <-ctx.Done(): | ||
pipe_r.SetReadDeadline(time.Now()) |
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.
Note: pipe_r.Close()
would work here too but setting an immediate read deadline has the upside of returning a descriptive error message: i/o timeout
|
||
func TestSdNotifyBarrier(t *testing.T) { | ||
|
||
testDir, e := ioutil.TempDir("/tmp/", "test-") |
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.
Note: I used this since it's what I saw used in TestSdNotify
and assumed there was a good reason (like a CI limitation.) If that's not the case, the testing package provides a nice TempDir() function that might be better for these tests (and more portable.) https://golang.org/pkg/testing/#T.TempDir
@rsms can you please rebase on latest master? CI moved to github actions in the meanwhile. |
This adds daemon.SdNotifyBarrier including a unit test. It is modeled after systemd's sd_notify_barrier.
The barrier function is useful when a signalling process wants to wait for systemd to process previously-sent messages.
go fmt
has been applied to the source code as that seems to be the case with other source files in this project.Thanks for a useful package!