Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
cd30053
feat: mutex-protected in-process map for scheduling safety
SoWieMarkus Jul 14, 2026
58a9a46
Merge branch 'main' into feat/client-cache
SoWieMarkus Jul 14, 2026
c201d3d
fix: simplify interval calculation for cleanup ticker
SoWieMarkus Jul 14, 2026
e164280
Merge branch 'main' into feat/client-cache
mblos Jul 16, 2026
aa6440a
Merge branch 'main' into feat/client-cache
SoWieMarkus Aug 6, 2026
d9cf87e
refactor: remove Inner method from CachingClient and associated test
SoWieMarkus Aug 6, 2026
bd82974
feedback: merge cache and client
SoWieMarkus Aug 6, 2026
a3d73a1
refactor: update CachingClient to use inner client interface for info…
SoWieMarkus Aug 6, 2026
949d05f
feat: implement per-object write locks in CachingClient to prevent ov…
SoWieMarkus Aug 7, 2026
a783126
fix: prevent mutation of shared cache entry by deep-copying cached ob…
SoWieMarkus Aug 7, 2026
a4dfed2
feat: add NeedLeaderElection method to CachingClient for lifecycle ma…
SoWieMarkus Aug 7, 2026
72b1a01
feat: Add delete all of
SoWieMarkus Aug 7, 2026
8f93636
feat: add label matching test for overlay changes in CachingClient
SoWieMarkus Aug 7, 2026
1dd9c5c
feat: inflight controller using indexfields of overlay cache
SoWieMarkus Aug 12, 2026
efc3317
Refactored pending cache to wrap around inner clusters of mcl instead…
SoWieMarkus Aug 19, 2026
35f5431
Merge branch 'main' into feat/client-cache
SoWieMarkus Aug 19, 2026
5fbe22a
test: enhance client tests and fix cache indexing logic
SoWieMarkus Aug 19, 2026
6cc2868
chore: replace changes that were needed because cache wraps mcl but a…
SoWieMarkus Aug 19, 2026
10ef511
feedback
SoWieMarkus Aug 19, 2026
f36218a
docs: clarify ClusterWrapper interface documentation for better under…
SoWieMarkus Aug 19, 2026
b1315a6
Merge branch 'main' into feat/client-cache
SoWieMarkus Aug 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions cmd/manager/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ import (
"github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/failover"
"github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/inflight"
"github.com/cobaltcore-dev/cortex/internal/scheduling/reservations/quota"
"github.com/cobaltcore-dev/cortex/pkg/cache"
"github.com/cobaltcore-dev/cortex/pkg/conf"
"github.com/cobaltcore-dev/cortex/pkg/monitoring"
"github.com/cobaltcore-dev/cortex/pkg/multicluster"
Expand Down Expand Up @@ -391,6 +392,10 @@ func main() {
},
}
multiclusterClientConfig := conf.GetConfigOrDie[multicluster.ClientConfig]()

if c := conf.GetConfigOrDie[cache.RootConfig](); c.Cache.Enabled {
multiclusterClient.Wrappers = append(multiclusterClient.Wrappers, cache.NewWrapper(c.Cache))
}
if err := multiclusterClient.InitFromConf(ctx, mgr, multiclusterClientConfig); err != nil {
setupLog.Error(err, "unable to initialize multicluster client")
os.Exit(1)
Expand Down
8 changes: 7 additions & 1 deletion helm/bundles/cortex-nova/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,12 @@ kvm:
# Useful when rolling out a new KVM region before it is production-ready.
criticalAlerts: true

# Cache configuration for the transparent in-process overlay cache.
cache:
enabled: true
gvks:
- cortex.cloud/v1alpha1/Reservation

cortex: &cortex
crd: {enable: false}
# Disable the default ServiceMonitor and metrics service from the kubebuilder stack.
Expand Down Expand Up @@ -185,7 +191,7 @@ cortex-scheduling-controllers:
# How long after a VM is allocated to a reservation before it is expected to appear
# on the target host; allocations not confirmed within this window are removed
allocationGracePeriod: "15m"
# How long to wait after detecting host over-subscription before evicting reservation slots.
# How long to wait after detecting host over-subscription before evicting reservation slots.
# Gives other controllers (e.g. failover) time to self-heal.
oversubscriptionGracePeriod: "3m"
# Minimum time between consecutive over-subscription checks for the same host.
Expand Down
4 changes: 4 additions & 0 deletions internal/shim/placement/field_index_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,10 @@ type stubCluster struct {
func (s *stubCluster) GetClient() client.Client { return s.cl }
func (s *stubCluster) GetCache() cache.Cache { return s.cache }

// GetFieldIndexer returns the cache, which implements client.FieldIndexer via
// its IndexField method — mirroring an unwrapped controller-runtime cluster.
func (s *stubCluster) GetFieldIndexer() client.FieldIndexer { return s.cache }

type stubManager struct {
manager.Manager
}
Expand Down
Loading