diff --git a/commands/multi.go b/commands/multi.go
index 4f45f7cff6e72a7b4d1a6d8709b735f85da23a9d..fd32de0e076f236043356fb6f5c4c2d0258747ae 100644
--- a/commands/multi.go
+++ b/commands/multi.go
@@ -216,21 +216,14 @@ func (mr *RunCommand) acquireRunnerResources(provider common.ExecutorProvider, r
 		return nil, func() {}, fmt.Errorf("failed to update executor: %v", err)
 	}
 
-	releaseProviderFn := func() {
-		err := provider.Release(runner, executorData)
-		if err != nil {
-			logrus.WithError(err).Error("Failed to release executor")
-		}
-	}
-
 	if !mr.buildsHelper.acquireBuild(runner) {
-		releaseProviderFn()
+		provider.Release(runner, executorData)
 		return nil, nil, errors.New("failed to request job, runner limit met")
 	}
 
 	releaseFn := func() {
 		mr.buildsHelper.releaseBuild(runner)
-		releaseProviderFn()
+		provider.Release(runner, executorData)
 	}
 
 	return executorData, releaseFn, nil
diff --git a/common/executor.go b/common/executor.go
index f8ceb36c870c0040e11c1f31a8315bb89efca370..8dbed88b23867aa90b2187d0cd499b0eadb245dd 100644
--- a/common/executor.go
+++ b/common/executor.go
@@ -48,7 +48,7 @@ type ExecutorProvider interface {
 	CanCreate() bool
 	Create() Executor
 	Acquire(config *RunnerConfig) (ExecutorData, error)
-	Release(config *RunnerConfig, data ExecutorData) error
+	Release(config *RunnerConfig, data ExecutorData)
 	GetFeatures(features *FeaturesInfo) error
 	GetDefaultShell() string
 }
diff --git a/common/mock_ExecutorProvider.go b/common/mock_ExecutorProvider.go
index 2e5488e351e17a371c77a14f3d8f906ce6694878..47722361fb6c4aca2c024f5aefe51705feb5c708 100644
--- a/common/mock_ExecutorProvider.go
+++ b/common/mock_ExecutorProvider.go
@@ -93,15 +93,6 @@ func (_m *MockExecutorProvider) GetFeatures(features *FeaturesInfo) error {
 }
 
 // Release provides a mock function with given fields: config, data
-func (_m *MockExecutorProvider) Release(config *RunnerConfig, data ExecutorData) error {
-	ret := _m.Called(config, data)
-
-	var r0 error
-	if rf, ok := ret.Get(0).(func(*RunnerConfig, ExecutorData) error); ok {
-		r0 = rf(config, data)
-	} else {
-		r0 = ret.Error(0)
-	}
-
-	return r0
+func (_m *MockExecutorProvider) Release(config *RunnerConfig, data ExecutorData) {
+	_m.Called(config, data)
 }
diff --git a/executors/default_executor_provider.go b/executors/default_executor_provider.go
index 67a4a60cdb40ae747877c7c31e8742d237794815..ebffd49a36e5aae17fe84939a38a74fe59077333 100644
--- a/executors/default_executor_provider.go
+++ b/executors/default_executor_provider.go
@@ -27,9 +27,7 @@ func (e DefaultExecutorProvider) Acquire(config *common.RunnerConfig) (common.Ex
 	return nil, nil
 }
 
-func (e DefaultExecutorProvider) Release(config *common.RunnerConfig, data common.ExecutorData) error {
-	return nil
-}
+func (e DefaultExecutorProvider) Release(config *common.RunnerConfig, data common.ExecutorData) {}
 
 func (e DefaultExecutorProvider) GetFeatures(features *common.FeaturesInfo) error {
 	if e.FeaturesUpdater == nil {
diff --git a/executors/docker/machine/provider.go b/executors/docker/machine/provider.go
index 9111022e805daf2098487e8c58c894a5e83a261d..8e7f2cbc3aa46841b6d4d3450a1b569229300764 100644
--- a/executors/docker/machine/provider.go
+++ b/executors/docker/machine/provider.go
@@ -379,7 +379,7 @@ func (m *machineProvider) Use(config *common.RunnerConfig, data common.ExecutorD
 	return
 }
 
-func (m *machineProvider) Release(config *common.RunnerConfig, data common.ExecutorData) error {
+func (m *machineProvider) Release(config *common.RunnerConfig, data common.ExecutorData) {
 	// Release machine
 	details, ok := data.(*machineDetails)
 	if ok {
@@ -393,12 +393,11 @@ func (m *machineProvider) Release(config *common.RunnerConfig, data common.Execu
 			config.Machine.MaxBuilds > 0 && details.UsedCount >= config.Machine.MaxBuilds {
 			err := m.remove(details.Name, "Too many builds")
 			if err == nil {
-				return nil
+				return
 			}
 		}
 		details.State = machineStateIdle
 	}
-	return nil
 }
 
 func (m *machineProvider) CanCreate() bool {
diff --git a/executors/docker/machine/provider_test.go b/executors/docker/machine/provider_test.go
index d81e500d44c88ec01a0199162e1473eb2b6f817a..3b0aaf9ea4a3079cb67650fd39e4ed474354445a 100644
--- a/executors/docker/machine/provider_test.go
+++ b/executors/docker/machine/provider_test.go
@@ -564,8 +564,7 @@ func TestMachineReleaseIfInvalidDataArePassed(t *testing.T) {
 	assert.NotNil(t, nd)
 	assertTotalMachines(t, p, 1, "it creates one machine")
 
-	err = p.Release(nil, nd)
-	assert.NoError(t, err, "it should not fail")
+	p.Release(nil, nd)
 }
 
 func TestMachineCreationIfFailedToConnect(t *testing.T) {