diff --git a/pkg/source/source_client.go b/pkg/source/source_client.go index 53dc0e34a2e..c4e586335be 100644 --- a/pkg/source/source_client.go +++ b/pkg/source/source_client.go @@ -147,28 +147,36 @@ func WithPluginDir(dir string) Option { } func (m *clientManager) Register(scheme string, resourceClient ResourceClient, adaptor requestAdapter, hooks ...Hook) error { + scheme = strings.ToLower(scheme) m.mu.Lock() defer m.mu.Unlock() - if client, ok := m.clients[strings.ToLower(scheme)]; ok { + if client, ok := m.clients[scheme]; ok { if client.(*clientWrapper).rc != resourceClient { return errors.Errorf("client with scheme %s already exist, current client: %#v", scheme, client) } + logger.Warnf("client with scheme %s already exist, no need register again", scheme) + return nil } - m.clients[strings.ToLower(scheme)] = &clientWrapper{ + m.doRegister(scheme, &clientWrapper{ adapter: adaptor, hooks: hooks, rc: resourceClient, - } + }) return nil } +func (m *clientManager) doRegister(scheme string, resourceClient ResourceClient) { + m.clients[strings.ToLower(scheme)] = resourceClient +} + func (m *clientManager) UnRegister(scheme string) { m.mu.Lock() defer m.mu.Unlock() - if client, ok := m.clients[strings.ToLower(scheme)]; ok { + scheme = strings.ToLower(scheme) + if client, ok := m.clients[scheme]; ok { logger.Infof("remove client %#v for scheme %s", client, scheme) } - delete(m.clients, strings.ToLower(scheme)) + delete(m.clients, scheme) } func (m *clientManager) GetClient(scheme string, options ...Option) (ResourceClient, bool) { @@ -198,7 +206,7 @@ func (m *clientManager) GetClient(scheme string, options ...Option) (ResourceCli m.mu.Unlock() return nil, false } - m.clients[scheme] = client + m.doRegister(scheme, client) m.mu.Unlock() return client, true } diff --git a/test/e2e/e2e_test.go b/test/e2e/e2e_test.go index 467d052669d..83acdb91070 100644 --- a/test/e2e/e2e_test.go +++ b/test/e2e/e2e_test.go @@ -68,6 +68,7 @@ var _ = BeforeSuite(func() { rawDfgetVersion, err := pod.Command("dfget", "version").CombinedOutput() Expect(err).NotTo(HaveOccurred()) dfgetGitCommit := strings.Fields(string(rawDfgetVersion))[7] + fmt.Printf("raw dfget version: %s\n", rawDfgetVersion) fmt.Printf("dfget merge commit: %s\n", dfgetGitCommit) if mode == dfdaemonCompatibilityTestMode {