Zanzana: periodic sync of team members (#94752)

* Rewrite zanzana collector to fetch all available pages

* Register access control as a background service

* If zanzana is enabled we run Syncs and start Reconciliation job

* Update pkg/services/authz/zanzana/client/client.go

Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com>

* Use server lock when doing performing reconciliation
This commit is contained in:
Karl Persson
2024-10-17 15:28:33 +02:00
committed by GitHub
co-authored by Alexander Zobnin
parent a50507e645
commit 4083b2208e
17 changed files with 364 additions and 83 deletions
@@ -0,0 +1,19 @@
package dualwrite
// batch will call fn with a batch of T for specified size.
func batch[T any](items []T, batchSize int, fn func([]T) error) error {
count := len(items)
for i := 0; i < count; {
end := i + batchSize
if end > count {
end = count
}
if err := fn(items[i:end]); err != nil {
return err
}
i = end
}
return nil
}