Skip to content

ei: Drain all events sitting in our pipe - #8556

Merged
nbolton merged 1 commit into
deskflow:masterfrom
whot:wip/drain-pipe
May 1, 2025
Merged

ei: Drain all events sitting in our pipe#8556
nbolton merged 1 commit into
deskflow:masterfrom
whot:wip/drain-pipe

Conversation

@whot

@whot whot commented May 1, 2025

Copy link
Copy Markdown
Contributor

If we're starved for resources, we may end up with more than 64 notifications in our pipe before we get to actually read them. Those notifications are just that though, so let's drain them.

Seen in #8503 (comment)

If we're starved for resources, we may end up with more than 64
notifications in our pipe before we get to actually read them.
Those notifications are just that though, so let's drain them.
@nbolton

nbolton commented May 1, 2025

Copy link
Copy Markdown
Member

Hope you don't mind, I reworded the commit (ei: -> fix(ei):) to use conventional commit optional scope.

@nbolton
nbolton self-requested a review May 1, 2025 08:39

@nbolton nbolton left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Looks good, managed to get a few lines that drained >1. I noticed that when used normally, rarely >1 are drained. But, when running the server through valgrind and also running stress, I more often get 2 drained, and occasionally even get 3 drained.

$ grep 'total drained' deskflow.log

[2025-05-01T09:47:01] DEBUG2: event queue read result: 0 (total drained: 3)
[2025-05-01T09:47:02] DEBUG2: event queue read result: 0 (total drained: 2)
[2025-05-01T09:47:03] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:03] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:03] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:04] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:05] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:06] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:08] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:08] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:08] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:13] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:13] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:18] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:18] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:18] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:18] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:23] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:23] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:23] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:23] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:28] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:28] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:28] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:33] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:33] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:33] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:33] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:38] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:38] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:38] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:38] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:38] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:38] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:43] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:43] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:43] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:43] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:43] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:48] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:48] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:48] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:48] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:53] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:53] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:53] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:53] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:53] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:58] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:58] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:58] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:58] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:47:58] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:01] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:03] DEBUG2: event queue read result: 0 (total drained: 2)
[2025-05-01T09:48:05] DEBUG2: event queue read result: 0 (total drained: 3)
[2025-05-01T09:48:08] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:08] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:13] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:13] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:13] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:18] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:18] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:19] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:24] DEBUG2: event queue read result: 0 (total drained: 1)
[2025-05-01T09:48:24] DEBUG2: event queue read result: 0 (total drained: 1)

@nbolton
nbolton merged commit 00f53c1 into deskflow:master May 1, 2025
@whot

whot commented May 1, 2025

Copy link
Copy Markdown
Contributor Author

Hope you don't mind, I reworded the commit (ei: -> fix(ei):) to use conventional commit optional scope.

oh, oops, thanks for fixing it. ftr, you are welcome to change any commit message and minor things in the commit to match project requirements without asking me first.

I noticed that when used normally, rarely >1 are drained.

1 is the ideal condition, I think except in the (presumably rare) situation where you do enqueue two special events immediately. Anytime you go >1 means we're not pulling the events out fast enough and our event order is messed up.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants