-
Notifications
You must be signed in to change notification settings - Fork 128
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
dotsv2: remove jitters entirely #368
Conversation
Nice! This works great for me. I also don't have a windows machine. I think leaving the old implementation for windows would be fine. |
26f5f9e
to
df90c90
Compare
SGTM, I left it as-is for now and commented that it could be improved in the future if someone wants |
df90c90
to
53ec696
Compare
53ec696
to
eb1c70d
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.
Thank you making these improvements!
[0K[?25h[?25l[5A[0K | ||
[0K |
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.
I think it's pretty cool that you can see the functional change to the logic by looking at the golden file. The control sequences moved to a different place in the output.
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/cerbos/cerbos/api/genpb](https://togithub.com/cerbos/cerbos) | require | digest | `0d63f1e` -> `341baa4` | | [github.com/grpc-ecosystem/go-grpc-middleware/v2](https://togithub.com/grpc-ecosystem/go-grpc-middleware) | require | patch | `v2.0.0` -> `v2.0.1` | | [github.com/lestrrat-go/jwx/v2](https://togithub.com/lestrrat-go/jwx) | require | patch | `v2.0.12` -> `v2.0.13` | | [google.golang.org/grpc](https://togithub.com/grpc/grpc-go) | require | patch | `v1.58.0` -> `v1.58.2` | | [gotest.tools/gotestsum](https://togithub.com/gotestyourself/gotestsum) | require | minor | `v1.10.1` -> `v1.11.0` | --- ### Release Notes <details> <summary>grpc-ecosystem/go-grpc-middleware (github.com/grpc-ecosystem/go-grpc-middleware/v2)</summary> ### [`v2.0.1`](https://togithub.com/grpc-ecosystem/go-grpc-middleware/releases/tag/v2.0.1) [Compare Source](https://togithub.com/grpc-ecosystem/go-grpc-middleware/compare/v2.0.0...v2.0.1) #### What's Changed - Fix outdated 'make proto' command by [@​takp](https://togithub.com/takp) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/623](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/623) - Fix linting errors by [@​takp](https://togithub.com/takp) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/624](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/624) - Logging: Add missing variadic operator for fields by [@​olivierlemasle](https://togithub.com/olivierlemasle) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/629](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/629) - feat: Support extracting fields from CallMeta by [@​fsaintjacques](https://togithub.com/fsaintjacques) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/628](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/628) - Fix "make test" and "make lint" by [@​olivierlemasle](https://togithub.com/olivierlemasle) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/627](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/627) - Do not set timeout for stream initialization by [@​DavyJohnes](https://togithub.com/DavyJohnes) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/645](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/645) - Add logging option to disable fields in log entry by [@​coleenquadros](https://togithub.com/coleenquadros) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/631](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/631) - Update logging adapter docs by [@​aboryslawski](https://togithub.com/aboryslawski) in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/647](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/647) #### New Contributors - [@​takp](https://togithub.com/takp) made their first contribution in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/623](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/623) - [@​olivierlemasle](https://togithub.com/olivierlemasle) made their first contribution in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/629](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/629) - [@​fsaintjacques](https://togithub.com/fsaintjacques) made their first contribution in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/628](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/628) - [@​DavyJohnes](https://togithub.com/DavyJohnes) made their first contribution in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/645](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/645) - [@​coleenquadros](https://togithub.com/coleenquadros) made their first contribution in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/631](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/631) - [@​aboryslawski](https://togithub.com/aboryslawski) made their first contribution in [https://github.com/grpc-ecosystem/go-grpc-middleware/pull/647](https://togithub.com/grpc-ecosystem/go-grpc-middleware/pull/647) **Full Changelog**: grpc-ecosystem/go-grpc-middleware@v2.0.0...v2.0.1 </details> <details> <summary>lestrrat-go/jwx (github.com/lestrrat-go/jwx/v2)</summary> ### [`v2.0.13`](https://togithub.com/lestrrat-go/jwx/releases/tag/v2.0.13) [Compare Source](https://togithub.com/lestrrat-go/jwx/compare/v2.0.12...v2.0.13) v2.0.13 26 Sep 2023 [New Features] * [jwk] jwk.Equal has been added. Please note that this is equivalent to comparing the keys' thumbprints, therefore it does NOT take in consideration non-essential fields. [Miscellaneous] * Various documentation fixes and additions. </details> <details> <summary>grpc/grpc-go (google.golang.org/grpc)</summary> ### [`v1.58.2`](https://togithub.com/grpc/grpc-go/releases/tag/v1.58.2): Release 1.58.2 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.58.1...v1.58.2) ### Bug Fixes - balancer/weighted_round_robin: fix ticker leak on update A new ticker is created every time there is an update of addresses or configuration, but was not properly stopped. This change stops the ticker when it is no longer needed. ### [`v1.58.1`](https://togithub.com/grpc/grpc-go/releases/tag/v1.58.1): Release 1.58.1 [Compare Source](https://togithub.com/grpc/grpc-go/compare/v1.58.0...v1.58.1) ##### Bug Fixes - grpc: fix a bug that was decrementing active RPC count too early for streaming RPCs; leading to channel moving to IDLE even though it had open streams - grpc: fix a bug where transports were not being closed upon channel entering IDLE </details> <details> <summary>gotestyourself/gotestsum (gotest.tools/gotestsum)</summary> ### [`v1.11.0`](https://togithub.com/gotestyourself/gotestsum/releases/tag/v1.11.0) [Compare Source](https://togithub.com/gotestyourself/gotestsum/compare/v1.10.1...v1.11.0) #### What's Changed - handle multiple levels in subtest regex generation by [@​brycekahle](https://togithub.com/brycekahle) in [https://github.com/gotestyourself/gotestsum/pull/342](https://togithub.com/gotestyourself/gotestsum/pull/342) - rerun-fails: prevent extra runs when a sub-test fails by [@​brycekahle](https://togithub.com/brycekahle) in [https://github.com/gotestyourself/gotestsum/pull/343](https://togithub.com/gotestyourself/gotestsum/pull/343) - Add note about binary test result caching by [@​nfi-hashicorp](https://togithub.com/nfi-hashicorp) in [https://github.com/gotestyourself/gotestsum/pull/350](https://togithub.com/gotestyourself/gotestsum/pull/350) - dots-v2: hide cursor during output by [@​howardjohn](https://togithub.com/howardjohn) in [https://github.com/gotestyourself/gotestsum/pull/354](https://togithub.com/gotestyourself/gotestsum/pull/354) - Export elapsed time to the post-run environment by [@​afbjorklund](https://togithub.com/afbjorklund) in [https://github.com/gotestyourself/gotestsum/pull/360](https://togithub.com/gotestyourself/gotestsum/pull/360) - Include test.timeout stack trace in the junit.xml by [@​dnephin](https://togithub.com/dnephin) in [https://github.com/gotestyourself/gotestsum/pull/357](https://togithub.com/gotestyourself/gotestsum/pull/357) - Fix dots formats with stderr by [@​dnephin](https://togithub.com/dnephin) in [https://github.com/gotestyourself/gotestsum/pull/358](https://togithub.com/gotestyourself/gotestsum/pull/358) - Rename TESTS_ELAPSED environment variable by [@​afbjorklund](https://togithub.com/afbjorklund) in [https://github.com/gotestyourself/gotestsum/pull/361](https://togithub.com/gotestyourself/gotestsum/pull/361) - GitHub actions format by [@​dnephin](https://togithub.com/dnephin) in [https://github.com/gotestyourself/gotestsum/pull/315](https://togithub.com/gotestyourself/gotestsum/pull/315) - Add the time unit to elapsed time duration by [@​afbjorklund](https://togithub.com/afbjorklund) in [https://github.com/gotestyourself/gotestsum/pull/363](https://togithub.com/gotestyourself/gotestsum/pull/363) - Add testdox format by [@​bitfield](https://togithub.com/bitfield) in [https://github.com/gotestyourself/gotestsum/pull/359](https://togithub.com/gotestyourself/gotestsum/pull/359) - Add post-run-command notify implementation for linux by [@​afbjorklund](https://togithub.com/afbjorklund) in [https://github.com/gotestyourself/gotestsum/pull/362](https://togithub.com/gotestyourself/gotestsum/pull/362) - dotsv2: remove jitters entirely by [@​howardjohn](https://togithub.com/howardjohn) in [https://github.com/gotestyourself/gotestsum/pull/368](https://togithub.com/gotestyourself/gotestsum/pull/368) #### New Contributors - [@​brycekahle](https://togithub.com/brycekahle) made their first contribution in [https://github.com/gotestyourself/gotestsum/pull/342](https://togithub.com/gotestyourself/gotestsum/pull/342) - [@​nfi-hashicorp](https://togithub.com/nfi-hashicorp) made their first contribution in [https://github.com/gotestyourself/gotestsum/pull/350](https://togithub.com/gotestyourself/gotestsum/pull/350) - [@​howardjohn](https://togithub.com/howardjohn) made their first contribution in [https://github.com/gotestyourself/gotestsum/pull/354](https://togithub.com/gotestyourself/gotestsum/pull/354) - [@​afbjorklund](https://togithub.com/afbjorklund) made their first contribution in [https://github.com/gotestyourself/gotestsum/pull/360](https://togithub.com/gotestyourself/gotestsum/pull/360) - [@​bitfield](https://togithub.com/bitfield) made their first contribution in [https://github.com/gotestyourself/gotestsum/pull/359](https://togithub.com/gotestyourself/gotestsum/pull/359) **Full Changelog**: gotestyourself/gotestsum@v1.10.1...v1.11.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 4am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/cerbos/cerbos-sdk-go). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4xMDcuMiIsInVwZGF0ZWRJblZlciI6IjM2LjEwNy4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiJ9--> Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Signed-off-by: Oğuzhan Durgun <[email protected]> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This had some previous fixes: * gotestyourself#368 * gotestyourself#354 These do not fully fix the problem, only mask the issues. The real issues arise when there are 100s of packages to display, but only so much screen space. As each one bounces around, the text is entirely unreadable. The previous approaches was to more effieciently update the lines to make it more incremental. The approach here is different - simple but extremely effective. Instead of trying to constantly write out the entire set of lines/packages under test, on each event, we keep track of a active and completed set of packages. Once a package is completed, we write it out one last time, and then never overwrite it. The active set is treated as we do today. This means if we have 8 core machine and 1000 packages, we are only updating 8 lines at a time, which removes all jitteriness.
As best I can tell, this fully fixes #352
While there were a variety of workarounds I tried to fix this, which had some improvement, the real root cause is doing
clear screen; write
. This leaves some time where each cell in the terminal goes from<something> -> empty -> <something>
, which leads to blinking.Instead, we can write and clear as we go. This has the same end result, but avoids the intermediate step where we have an empty cell.
This PR is probably not acceptable as-is as it doesn't even compile on windows. Not sure the best steps there, I neither have experience with implementing this in windows nor a machine to test on. We could keep the old implementation for windows, possibly.