From dc08c67239968a75d8742c9b5cdd61a192bd6619 Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Tue, 27 Apr 2021 16:52:22 -0700 Subject: [PATCH] Remove premature protection for Start/Stop, trust Service to start/stop once Signed-off-by: Bogdan Drutu --- .../receiver/smartagentreceiver/receiver.go | 22 +++++-------------- .../smartagentreceiver/receiver_test.go | 11 +--------- 2 files changed, 6 insertions(+), 27 deletions(-) diff --git a/internal/receiver/smartagentreceiver/receiver.go b/internal/receiver/smartagentreceiver/receiver.go index 01e7e41c09..0b9e342f23 100644 --- a/internal/receiver/smartagentreceiver/receiver.go +++ b/internal/receiver/smartagentreceiver/receiver.go @@ -32,7 +32,6 @@ import ( "github.com/signalfx/signalfx-agent/pkg/utils/hostfs" "github.com/sirupsen/logrus" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenterror" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/consumer" "go.uber.org/zap" @@ -49,8 +48,6 @@ type Receiver struct { nextTracesConsumer consumer.Traces logger *zap.Logger config *Config - startOnce sync.Once - stopOnce sync.Once sync.Mutex } @@ -118,12 +115,7 @@ func (r *Receiver) Start(_ context.Context, host component.Host) error { configCore.ProcPath = saConfigProvider.SmartAgentConfig().ProcPath - err = componenterror.ErrAlreadyStarted - r.startOnce.Do(func() { - // starts the monitor - err = saconfig.CallConfigure(r.monitor, r.config.monitorConfig) - }) - return err + return saconfig.CallConfigure(r.monitor, r.config.monitorConfig) } func (r *Receiver) Shutdown(context.Context) error { @@ -132,18 +124,14 @@ func (r *Receiver) Shutdown(context.Context) error { monitorType: r.config.monitorConfig.MonitorConfigCore().Type, }, r.logger) - err := componenterror.ErrAlreadyStopped if r.monitor == nil { - err = fmt.Errorf("smartagentreceiver's Shutdown() called before Start() or with invalid monitor state") + return fmt.Errorf("smartagentreceiver's Shutdown() called before Start() or with invalid monitor state") } else if shutdownable, ok := (r.monitor).(monitors.Shutdownable); !ok { - err = fmt.Errorf("invalid monitor state at Shutdown(): %#v", r.monitor) + return fmt.Errorf("invalid monitor state at Shutdown(): %#v", r.monitor) } else { - r.stopOnce.Do(func() { - shutdownable.Shutdown() - err = nil - }) + shutdownable.Shutdown() } - return err + return nil } func (r *Receiver) createMonitor(monitorType string, host component.Host) (monitor interface{}, err error) { diff --git a/internal/receiver/smartagentreceiver/receiver_test.go b/internal/receiver/smartagentreceiver/receiver_test.go index cea36ef9b6..f040877810 100644 --- a/internal/receiver/smartagentreceiver/receiver_test.go +++ b/internal/receiver/smartagentreceiver/receiver_test.go @@ -32,7 +32,6 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component" - "go.opentelemetry.io/collector/component/componenterror" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/config/configtest" @@ -197,23 +196,15 @@ func TestStartReceiverWithUnknownMonitorType(t *testing.T) { ) } -func TestMultipleStartAndShutdownInvocations(t *testing.T) { +func TestStartAndShutdown(t *testing.T) { t.Cleanup(cleanUp) cfg := newConfig("valid", "cpu", 1) receiver := NewReceiver(zap.NewNop(), cfg) err := receiver.Start(context.Background(), componenttest.NewNopHost()) require.NoError(t, err) - err = receiver.Start(context.Background(), componenttest.NewNopHost()) - require.Error(t, err) - assert.Equal(t, err, componenterror.ErrAlreadyStarted) - err = receiver.Shutdown(context.Background()) require.NoError(t, err) - - err = receiver.Shutdown(context.Background()) - require.Error(t, err) - assert.Equal(t, err, componenterror.ErrAlreadyStopped) } func TestOutOfOrderShutdownInvocations(t *testing.T) {