Commit graph

25 commits

Author SHA1 Message Date
32079ad7c2
[#12] grpc: Fix method name
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-03-20 17:24:39 +03:00
1ca213ee7c
[#12] mclock: Fix deadlock caused by mclock.Close
Deadlock scenario:
- mclock closed by `Close` method, it locks mutex and calls `clock.close`
- clock starts `scheduleRequest` goroutine, it tries to lock mutex
- `clock.Close` waits for all goroutines

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-03-20 10:31:15 +03:00
346752477b
[#12] mclock: Fix timer-based scheduling
Let's assume that there are two requests in the queue with execution time t1 and t2.
The timer is set to t1. The timer is triggered, schedules the t1 request,
calculates the time for the next timer t2 to be triggered.
But it doesn't schedules timer to this time because of the
`q.timeBasedScheduleTs > nextTs` check.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-03-19 17:12:00 +03:00
3e7ca94035
Revert "[#7] mclock: Add tag stat"
This reverts commit 25102d1e1a.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-03-10 16:58:38 +03:00
d752a1c95e
[#6] pre-commit: Add hook for running gofumpt
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
2025-03-04 13:01:33 +03:00
deaae4d37a
[#6] Makefile: Remove fmt rule, use fumpt rule instead
There were several problems:
- `fmt` was a duplicate of `fumpt`
- `fmt` used globally installed `gofumpt`

Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
2025-03-04 13:01:25 +03:00
25102d1e1a [#7] mclock: Add tag stat
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-02-27 07:29:15 +00:00
cafa869fea
[#8] limiting: Make SemaphoreLimiter.Acquire() zero-alloc
Previously, `Acquire` on exising key did 1 allocation because
`func() { sem.Release() }` was a closure capturing different variables.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
2025-02-26 18:03:41 +03:00
356851eed3
[#4] limiting/semaphore: Add benchmark for semaphore
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
2025-02-13 15:50:59 +03:00
59fb93fb23
[#4] limiting: Add limiter
Signed-off-by: Aleksey Savchuk <a.savchuk@yadro.com>
2025-02-13 15:38:27 +03:00
30e83428fd [#5] govulncheck: Fix minor update problems for good
Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-02-10 18:39:38 +03:00
cfbca7fa1d [#3] govulncheck: Use patch release with security fixes
https://go.dev/doc/devel/release#go1.23.minor

Signed-off-by: Vitaliy Potyarkin <v.potyarkin@yadro.com>
2025-01-28 18:03:13 +03:00
128933fade
[#2] Add CODEOWNERS
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 14:29:37 +03:00
1fb8b137c5
[#2] tagging: Add grpc and context methods
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 14:29:36 +03:00
f4d8ebf13d
[#1] mclock: Add assert package
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:35:54 +03:00
9a48a50220
[#1] mclock: Refactor scheduleRequest
Split to `scheduleRequest` and `scheduleRequestUnsafe`.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:23:07 +03:00
d8663f1a74
[#1] mclock: Fix possible deadlock
There is a possible call-chain `scheduleRequest()` -> `runAt()` -> `scheduleRequest()`,
so second `scheduleRequest()` may be locked on mutext held by first `scheduleRequest()`.

Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:54 +03:00
f1cb5b40d5
[#1] mclock: Use time.Duration for idle timeout
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:54 +03:00
47559a8d16
[#1] mclock: Refactor: split code between files
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:53 +03:00
54b4bf7cc1
[#1] mclock: Fix time based scheduling
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:53 +03:00
e18d1a7c45
[#1] mclock: Fix bench format
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:52 +03:00
f51c095236
[#1] pre-commit: Use local golangci-lint hook
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:52 +03:00
7833c3aac5
[#1] Makefile: Create directory with parents
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:51 +03:00
0dccab22c2
[#1] mclock: Initial implementation
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-28 11:20:51 +03:00
eca6765dda
Initial commit
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
2025-01-20 16:02:19 +03:00