Skip to content

Commit c2204ae

Browse files
jiachengxuagilgur5
authored andcommitted
fix(server): don't use cluster scope list + watch in namespaced mode. Fixes argoproj#13177 (argoproj#13189)
Signed-off-by: Jiacheng Xu <[email protected]> (cherry picked from commit 8f3860d)
1 parent 9481bb0 commit c2204ae

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

pkg/apiclient/argo-kube-client.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ func newArgoKubeClient(ctx context.Context, clientConfig clientcmd.ClientConfig,
9292
func (a *argoKubeClient) NewWorkflowServiceClient() workflowpkg.WorkflowServiceClient {
9393
wfArchive := sqldb.NullWorkflowArchive
9494
wfLister := store.NewKubeLister(a.wfClient)
95-
return &errorTranslatingWorkflowServiceClient{&argoKubeWorkflowServiceClient{workflowserver.NewWorkflowServer(a.instanceIDService, argoKubeOffloadNodeStatusRepo, wfArchive, a.wfClient, wfLister, nil)}}
95+
return &errorTranslatingWorkflowServiceClient{&argoKubeWorkflowServiceClient{workflowserver.NewWorkflowServer(a.instanceIDService, argoKubeOffloadNodeStatusRepo, wfArchive, a.wfClient, wfLister, nil, nil)}}
9696
}
9797

9898
func (a *argoKubeClient) NewCronWorkflowServiceClient() (cronworkflow.CronWorkflowServiceClient, error) {

server/apiserver/argoserver.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ func init() {
123123
}
124124
}
125125

126-
func getResourceCacheNamespace(opts ArgoServerOpts) string {
127-
if opts.ManagedNamespace != "" {
128-
return opts.ManagedNamespace
126+
func getResourceCacheNamespace(managedNamespace string) string {
127+
if managedNamespace != "" {
128+
return managedNamespace
129129
}
130130
return v1.NamespaceAll
131131
}
@@ -145,7 +145,7 @@ func NewArgoServer(ctx context.Context, opts ArgoServerOpts) (*argoServer, error
145145
}
146146
if ssoIf.IsRBACEnabled() {
147147
// resourceCache is only used for SSO RBAC
148-
resourceCache = cache.NewResourceCache(opts.Clients.Kubernetes, getResourceCacheNamespace(opts))
148+
resourceCache = cache.NewResourceCache(opts.Clients.Kubernetes, getResourceCacheNamespace(opts.ManagedNamespace))
149149
resourceCache.Run(ctx.Done())
150150
}
151151
log.Info("SSO enabled")
@@ -235,7 +235,8 @@ func (as *argoServer) Run(ctx context.Context, port int, browserOpenFunc func(st
235235
if err != nil {
236236
log.Fatal(err)
237237
}
238-
workflowServer := workflow.NewWorkflowServer(instanceIDService, offloadRepo, wfArchive, as.clients.Workflow, wfStore, wfStore)
238+
resourceCacheNamespace := getResourceCacheNamespace(as.managedNamespace)
239+
workflowServer := workflow.NewWorkflowServer(instanceIDService, offloadRepo, wfArchive, as.clients.Workflow, wfStore, wfStore, &resourceCacheNamespace)
239240
grpcServer := as.newGRPCServer(instanceIDService, workflowServer, wfArchiveServer, eventServer, config.Links, config.Columns, config.NavColor)
240241
httpServer := as.newHTTPServer(ctx, port, artifactServer)
241242

server/workflow/workflow_server.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,21 +58,21 @@ type workflowServer struct {
5858
var _ workflowpkg.WorkflowServiceServer = &workflowServer{}
5959

6060
// NewWorkflowServer returns a new WorkflowServer
61-
func NewWorkflowServer(instanceIDService instanceid.Service, offloadNodeStatusRepo sqldb.OffloadNodeStatusRepo, wfArchive sqldb.WorkflowArchive, wfClientSet versioned.Interface, wfLister store.WorkflowLister, wfStore store.WorkflowStore) *workflowServer {
61+
func NewWorkflowServer(instanceIDService instanceid.Service, offloadNodeStatusRepo sqldb.OffloadNodeStatusRepo, wfArchive sqldb.WorkflowArchive, wfClientSet versioned.Interface, wfLister store.WorkflowLister, wfStore store.WorkflowStore, namespace *string) *workflowServer {
6262
ws := &workflowServer{
6363
instanceIDService: instanceIDService,
6464
offloadNodeStatusRepo: offloadNodeStatusRepo,
6565
hydrator: hydrator.New(offloadNodeStatusRepo),
6666
wfArchive: wfArchive,
6767
wfLister: wfLister,
6868
}
69-
if wfStore != nil {
69+
if wfStore != nil && namespace != nil {
7070
lw := &cache.ListWatch{
7171
ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
72-
return wfClientSet.ArgoprojV1alpha1().Workflows(metav1.NamespaceAll).List(context.Background(), options)
72+
return wfClientSet.ArgoprojV1alpha1().Workflows(*namespace).List(context.Background(), options)
7373
},
7474
WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
75-
return wfClientSet.ArgoprojV1alpha1().Workflows(metav1.NamespaceAll).Watch(context.Background(), options)
75+
return wfClientSet.ArgoprojV1alpha1().Workflows(*namespace).Watch(context.Background(), options)
7676
},
7777
}
7878
wfReflector := cache.NewReflector(lw, &wfv1.Workflow{}, wfStore, reSyncDuration)

server/workflow/workflow_server_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -638,7 +638,8 @@ func getWorkflowServer() (workflowpkg.WorkflowServiceServer, context.Context) {
638638
if err = wfStore.Add(&wfObj5); err != nil {
639639
panic(err)
640640
}
641-
server := NewWorkflowServer(instanceIdSvc, offloadNodeStatusRepo, archivedRepo, wfClientset, wfStore, wfStore)
641+
namespaceAll := metav1.NamespaceAll
642+
server := NewWorkflowServer(instanceIdSvc, offloadNodeStatusRepo, archivedRepo, wfClientset, wfStore, wfStore, &namespaceAll)
642643
return server, ctx
643644
}
644645

0 commit comments

Comments
 (0)