Skip to content

Commit f4caa62

Browse files
authored
Merge pull request kubernetes#85590 from yuzhiquan/master
handle registry merge error
2 parents 97a4e66 + 9a9db00 commit f4caa62

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

pkg/scheduler/scheduler.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,9 @@ func New(client clientset.Interface,
303303
VolumeBinder: volumeBinder,
304304
})
305305
}
306-
registry.Merge(options.frameworkOutOfTreeRegistry)
306+
if err := registry.Merge(options.frameworkOutOfTreeRegistry); err != nil {
307+
return nil, err
308+
}
307309

308310
snapshot := nodeinfosnapshot.NewEmptySnapshot()
309311

pkg/scheduler/scheduler_test.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import (
4848
"k8s.io/kubernetes/pkg/scheduler/algorithm/priorities"
4949
schedulerapi "k8s.io/kubernetes/pkg/scheduler/apis/config"
5050
"k8s.io/kubernetes/pkg/scheduler/core"
51+
frameworkplugins "k8s.io/kubernetes/pkg/scheduler/framework/plugins"
5152
framework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
5253
internalcache "k8s.io/kubernetes/pkg/scheduler/internal/cache"
5354
fakecache "k8s.io/kubernetes/pkg/scheduler/internal/cache/fake"
@@ -202,6 +203,32 @@ func TestSchedulerCreation(t *testing.T) {
202203
if err != nil {
203204
t.Fatalf("Failed to create scheduler: %v", err)
204205
}
206+
207+
// Test case for when a plugin name in frameworkOutOfTreeRegistry already exist in defaultRegistry.
208+
fakeFrameworkPluginName := ""
209+
for name := range frameworkplugins.NewDefaultRegistry(&frameworkplugins.RegistryArgs{}) {
210+
fakeFrameworkPluginName = name
211+
break
212+
}
213+
registryFake := map[string]framework.PluginFactory{
214+
fakeFrameworkPluginName: func(_ *runtime.Unknown, fh framework.FrameworkHandle) (framework.Plugin, error) {
215+
return nil, nil
216+
},
217+
}
218+
_, err = New(client,
219+
informerFactory,
220+
NewPodInformer(client, 0),
221+
eventBroadcaster.NewRecorder(scheme.Scheme, "scheduler"),
222+
stopCh,
223+
WithAlgorithmSource(schedulerapi.SchedulerAlgorithmSource{Provider: &testSource}),
224+
WithPodInitialBackoffSeconds(1),
225+
WithPodMaxBackoffSeconds(10),
226+
WithFrameworkOutOfTreeRegistry(registryFake),
227+
)
228+
229+
if err == nil {
230+
t.Fatalf("Create scheduler should fail")
231+
}
205232
}
206233

207234
func TestScheduler(t *testing.T) {

0 commit comments

Comments
 (0)