Commit graph

26 commits

Author SHA1 Message Date
Nitish Kumar
212f51d851
fix(sharding): fix log format verb and document intentional shard-0 fallback (#27222)
Signed-off-by: nitishfy <justnitish06@gmail.com>
Signed-off-by: Nitish Kumar <justnitish06@gmail.com>
Co-authored-by: Soumya Ghosh Dastidar <44349253+gdsoumya@users.noreply.github.com>
2026-04-08 09:25:45 -04:00
Matthieu MOREL
0c9039ecd9
chore(controller): Fix modernize linter (#26313)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
Co-authored-by: Blake Pettersson <blake.pettersson@gmail.com>
2026-02-07 18:35:48 +01:00
ivanscai
d183d9c614
fix: dynamic cluster distribution issue 20965, update the shard… (#21042)
Signed-off-by: caijing <caijing.cai@alibaba-inc.com>
Co-authored-by: Ishita Sequeira <46771830+ishitasequeira@users.noreply.github.com>
2025-02-09 22:25:34 -05:00
github-actions[bot]
4d9835927d
Bump major version to 3 (#21410)
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: crenshaw-dev <350466+crenshaw-dev@users.noreply.github.com>
2025-01-10 16:14:00 -05:00
Matthieu MOREL
6c45721730
chore: enable early-return from revive (#21423)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-08 15:26:02 -05:00
Matthieu MOREL
947a7b84d7
chore: enable indent-error-flow from revive (#21394)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-07 10:25:22 -05:00
Matthieu MOREL
53bc19b5f2
chore: enable unused-parameter from revive (#21365)
* chore: enable unused-parameter from revive

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

* apply recommandations

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-07 10:12:56 -05:00
Matthieu MOREL
9f0dc9402f
chore: enable redundant-import-alias from revive (#21386)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-06 11:30:42 -05:00
Matthieu MOREL
5508d1feda
chore: enable importas for k8s.io/apimachinery/pkg/api/errors (#21262)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-03 17:09:37 +00:00
Matthieu MOREL
ceb758c877
chore: import k8s.io/api/core/v1 as corev1 (#21345)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-01-03 11:10:00 -05:00
Matthieu MOREL
8a6f53d044
chore: enable errorf of perfsprint linter (#21280)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-12-30 10:56:41 +02:00
Matthieu MOREL
140f17255a
chore: enable errorlint linter on controller folder (#18596)
* chore: enable errorlint linter on controller folder

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

* Update cache.go

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

* Update cache.go

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>

---------

Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-11 15:33:22 -04:00
Matthieu MOREL
7cf5ed06d4
chore: enable gofumpt and whitespace linters (#18567)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-11 15:41:55 +00:00
Matthieu MOREL
33df2ce698
chore: enable goimports linter (#18564)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-06-10 09:18:12 -04:00
Akram Ben Aissi
75cd97d6d4
feat: Consistent hashing with bounded loads algorithm for sharding (#16564)
* Adds consistent hashing with bound loads sharding algorithm

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Make the assignement consistent accross all clusters
- The assignment or running of the algorithm has to be consistent across all the clusters. Changed the function to return a map where the consistent hash will be used to build the map

- Modifications to the createConsistentHashsingWithBoundLoads function. This will create the map for cluster to shard. Note that the list must be consistent across all shards so that is why the cluster list must be sorted before going through the consistent hash algorithm

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Extracting constant and simplifying boolean expression

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Update docs: consistent-hashing sharding algorithm

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

---------

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>
2024-06-05 18:28:19 +00:00
Matthieu MOREL
9fe1dbfcad
fix: enable misspell linter (#18412)
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2024-05-28 12:51:04 +03:00
Enclavet
d73304ea1c
feat: Add app data to sharding cache to allow sharding by apps (#17014)
* Adding app list to sharding cache

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Add shard by apps test

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Fix lint

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Add coverage to test

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Fix lint

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Converted cluster/app accesors to private, add apps-in-any-namespace suport in shardingcache init, added read lock to GetAppDistribution

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

* Fix tests

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>

---------

Signed-off-by: Andrew Lee <andrewkl@enclavenet.com>
2024-03-01 13:56:48 -05:00
Oscar Wieman
df2b0e2711
fix typo (#17272)
Signed-off-by: Oscar Wieman <oscar@oscarr.nl>
2024-02-22 02:07:44 +00:00
Lukas Wöhrl
5d6111b745
fix: infer correct shard in statefulset setup (#17124, #17016) (#17167)
* fix: infer correct shard in statefulset setup

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix the case if only a single replica

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: resolving pointer on shard compare

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: add readlock for cluster accessor

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: use defer to protect access of 'shard'

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: revert locking in getclusteraccessor

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: handle nil shard case

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: handle any nil shard value as false

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: handle nil case and fix another missing pointer dereference 

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* revert

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: added tests and fixed some behaviour bugs

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* test: add test to validate that Shard value is not overriden

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* fix: added tests and fixe the case when server is changed inside a secret

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

* tests: add test cases for infering the shard logic

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>

---------

Signed-off-by: Lukas Wöhrl <lukas.woehrl@plentymarkets.com>
2024-02-13 11:51:41 -05:00
Akram Ben Aissi
cd4fc97c9d
fix: Use the cache for sharding (#15237)
* feat(sharding): use a cache

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* cluster cmd

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>

* - Assign shard 0 to in-cluster cluster and nil check updates
- Caching clusters while sharding: Fixing unit tests
- Update generated docs
- Debug e2e tests
- Default the shardNumber to the number of replicas if it is calculated to a higher value
- defered Unlock only when a lock is set
- Disabling temporarly other versions of k3s to check if e2e passes
- Do not fail if hostname format is not abc-n
- Fix unit test and skip some e2e
- Skip TestGitSubmoduleHTTPSSupport test
- Remove breaking defer c.lock.Unlock()
- Reverting testing all k3s version
- Default sharding fix
Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* fixes related to code review: renaming structure param, moving db initialisation

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Code review

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Set default shard to 0

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Set different default value for Sts and Deployment mode

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Expose ClusterShardingCache

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Removing use of argoDB.db for DistributionFunction

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Update generated documentation

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Fix comment about NoShardingDistributionFunction and NoShardingAlgorithm

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

---------

Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>
Co-authored-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2024-01-11 01:32:11 -05:00
Ishita Sequeira
cb25382658
feat: dynamic rebalancing of clusters across shards (#15036)
* Migrate Application Controller from Statefulset to Deployment

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add sharding deployment logic

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Update sharding logic and add comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add heartbeat as an environment variable

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add retry logic, heartbeat timeout environment variable

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* use the logic of pre-specified shard number on application controller pod

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix manifests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix lint and e2e tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* comment out failing e2e test

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* increase readiness probe interval period

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* "comment out readiness probe to see if e2e tests succeed"

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert commented readiness probe

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert commented test case

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* read environment variable for application controller deployment name

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add nil check on replica count for deployment of application controller

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Address comments

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add Informer, Update documentation, add unit tests

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update godoc

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* remove unwanted code and logs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add more documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert ApplicationController manifest to StatefulSet

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* reverting updated docs

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add documentation for the new dynamic distribution feature

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add an overlay for application controller deployment and update documentation

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix nit

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Marking the feature as alpha

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* Add feature status link

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* revert go,mod changes

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* update docs to avoid focusing on StatefulSet/Deployment (#26)

* update docs to avoid focusing on StatefulSet/Deployment

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

---------

Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>

* minor update to the doc

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

---------

Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Signed-off-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
Co-authored-by: Michael Crenshaw <350466+crenshaw-dev@users.noreply.github.com>
2023-09-22 19:49:09 +00:00
Alexandre Gaudreault
94ce1e99e9
fix(sharding): recurring info logs to debug (#14383)
Signed-off-by: Alexandre Gaudreault <alexandre.gaudreault@logmein.com>
2023-07-06 19:39:18 -04:00
Akram Ben Aissi
ee983fe8ac
fix: Fixes sharding placement algorithm and allows development of alternative algorithms (#13018)
* fix: Extraction of DistributionFunction to allow passing different type of functions to filter clusters by shard
- Adding unit tests for sharding
- Refresh clusters list on DistributionFunction call

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>

* fix: Incorrect conversion of an integer with architecture-dependent bit size from [strconv.Atoi](1) to a lower bit size type uint32 without an upper bound check.

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Added config to switch to round-robin sharding

Signed-off-by: Raghavi Shirur <rshirur@redhat.com>
Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Documenting sharding more, adding shuffling tests (skipped), re-enable sharding algo env var

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* Allow configuration through argocd-cmd-params-cm configMap and key: controller.sharding.algorithm

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

* De-duplicate code, remove reflection for default case, shorten distribution methods name, ran codegen on manifests
Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>

---------

Signed-off-by: Akram Ben Aissi <akram.benaissi@gmail.com>
Signed-off-by: ishitasequeira <ishiseq29@gmail.com>
Signed-off-by: Raghavi Shirur <rshirur@redhat.com>
Co-authored-by: Raghavi Shirur <raghaviss11@gmail.com>
2023-06-05 09:19:14 -04:00
jannfis
ae49b45249
chore: Upgrade Go module to v2 (#5931)
* chore: Upgrade Go module to v2

Signed-off-by: jannfis <jann@mistrust.net>

* Restore import order

Signed-off-by: jannfis <jann@mistrust.net>

* fix knowntypes_normalizer codegen error

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

* fix codegen

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

* fix Procfile

Signed-off-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>

Co-authored-by: Alexander Matyushentsev <AMatyushentsev@gmail.com>
2021-04-01 20:44:18 +02:00
Alexander Matyushentsev
b2fead6a84
feat: implement 'argocd-util cluster stats' command (#5733)
Signed-off-by: Alexander Matyushentsev <Alexander_Matyushentsev@intuit.com>
2021-03-11 08:53:17 -08:00
Alexander Matyushentsev
303925f4a0
feat: Support controller horizontal scaling (#4285) 2020-10-09 13:16:54 -07:00