diff --git a/cmd/drone-server/config/config.go b/cmd/drone-server/config/config.go index 3f15f351..eff3626e 100644 --- a/cmd/drone-server/config/config.go +++ b/cmd/drone-server/config/config.go @@ -203,7 +203,7 @@ type ( } Agent struct { - Enabled bool `envconfig:"DRONE_AGENTS_ENABLED"` + Disabled bool `envconfig:"DRONE_AGENTS_DISABLED"` } // Runner provides the runner configuration. diff --git a/cmd/drone-server/inject_runner.go b/cmd/drone-server/inject_runner.go index f9ac6594..c155482e 100644 --- a/cmd/drone-server/inject_runner.go +++ b/cmd/drone-server/inject_runner.go @@ -40,7 +40,7 @@ func provideRunner( ) *runner.Runner { // the local runner is only created when the nomad scheduler, // kubernetes scheduler, and remote agents are disabled - if config.Nomad.Enabled || config.Kube.Enabled || config.Agent.Enabled { + if config.Nomad.Enabled || config.Kube.Enabled || (config.Agent.Disabled == false) { return nil } engine, err := docker.NewEnv() diff --git a/cmd/drone-server/inject_scheduler.go b/cmd/drone-server/inject_scheduler.go index 9e9f3d34..b9c4a7fd 100644 --- a/cmd/drone-server/inject_scheduler.go +++ b/cmd/drone-server/inject_scheduler.go @@ -34,8 +34,6 @@ var schedulerSet = wire.NewSet( // scheduler based on the environment configuration. func provideScheduler(store core.StageStore, config config.Config) core.Scheduler { switch { - case config.Agent.Enabled: - return provideQueueScheduler(store, config) case config.Kube.Enabled: return provideKubernetesScheduler(config) case config.Nomad.Enabled: diff --git a/cmd/drone-server/inject_service.go b/cmd/drone-server/inject_service.go index 580ed422..b8d0b67a 100644 --- a/cmd/drone-server/inject_service.go +++ b/cmd/drone-server/inject_service.go @@ -188,7 +188,7 @@ func provideDatadog( EnableStash: config.IsStash(), EnableGogs: config.IsGogs(), EnableGitea: config.IsGitea(), - EnableAgents: config.Agent.Enabled, + EnableAgents: !config.Agent.Disabled, EnableNomad: config.Nomad.Enabled, EnableKubernetes: config.Kube.Enabled, }, diff --git a/store/shared/db/db.go b/store/shared/db/db.go index 6e6bb4f3..eb54fadf 100644 --- a/store/shared/db/db.go +++ b/store/shared/db/db.go @@ -16,6 +16,7 @@ package db import ( "database/sql" + "runtime/debug" "github.com/jmoiron/sqlx" ) @@ -98,7 +99,7 @@ func (db *DB) Lock(fn func(Execer, Binder) error) error { // transaction is committed. If an error is returned then the entire // transaction is rolled back. Any error that is returned from the function // or returned from the commit is returned from the Update() method. -func (db *DB) Update(fn func(Execer, Binder) error) error { +func (db *DB) Update(fn func(Execer, Binder) error) (err error) { db.lock.Lock() defer db.lock.Unlock() @@ -107,13 +108,19 @@ func (db *DB) Update(fn func(Execer, Binder) error) error { return err } - err = fn(tx, db.conn) - if err != nil { - tx.Rollback() - return err - } + defer func() { + if p := recover(); p != nil { + err = tx.Rollback() + debug.PrintStack() + } else if err != nil { + tx.Rollback() + } else { + err = tx.Commit() + } + }() - return tx.Commit() + err = fn(tx, db.conn) + return err } // Driver returns the name of the SQL driver. diff --git a/store/shared/migrate/mysql/ddl_gen.go b/store/shared/migrate/mysql/ddl_gen.go index 62cf7d63..4ee40448 100644 --- a/store/shared/migrate/mysql/ddl_gen.go +++ b/store/shared/migrate/mysql/ddl_gen.go @@ -368,7 +368,7 @@ CREATE TABLE IF NOT EXISTS stages ( ,stage_repo_id INTEGER ,stage_build_id INTEGER ,stage_number INTEGER -,stage_name VARCHAR(50) +,stage_name VARCHAR(100) ,stage_kind VARCHAR(50) ,stage_type VARCHAR(50) ,stage_status VARCHAR(50) diff --git a/store/shared/migrate/mysql/files/005_create_table_stages.sql b/store/shared/migrate/mysql/files/005_create_table_stages.sql index 0d940d20..6d8eb11a 100644 --- a/store/shared/migrate/mysql/files/005_create_table_stages.sql +++ b/store/shared/migrate/mysql/files/005_create_table_stages.sql @@ -5,7 +5,7 @@ CREATE TABLE IF NOT EXISTS stages ( ,stage_repo_id INTEGER ,stage_build_id INTEGER ,stage_number INTEGER -,stage_name VARCHAR(50) +,stage_name VARCHAR(100) ,stage_kind VARCHAR(50) ,stage_type VARCHAR(50) ,stage_status VARCHAR(50) diff --git a/store/shared/migrate/postgres/ddl_gen.go b/store/shared/migrate/postgres/ddl_gen.go index 84e555d6..2c38b99f 100644 --- a/store/shared/migrate/postgres/ddl_gen.go +++ b/store/shared/migrate/postgres/ddl_gen.go @@ -369,7 +369,7 @@ CREATE TABLE IF NOT EXISTS stages ( ,stage_repo_id INTEGER ,stage_build_id INTEGER ,stage_number INTEGER -,stage_name VARCHAR(50) +,stage_name VARCHAR(100) ,stage_kind VARCHAR(50) ,stage_type VARCHAR(50) ,stage_status VARCHAR(50) diff --git a/store/shared/migrate/postgres/files/005_create_table_stages.sql b/store/shared/migrate/postgres/files/005_create_table_stages.sql index 7900a2cd..6a775409 100644 --- a/store/shared/migrate/postgres/files/005_create_table_stages.sql +++ b/store/shared/migrate/postgres/files/005_create_table_stages.sql @@ -5,7 +5,7 @@ CREATE TABLE IF NOT EXISTS stages ( ,stage_repo_id INTEGER ,stage_build_id INTEGER ,stage_number INTEGER -,stage_name VARCHAR(50) +,stage_name VARCHAR(100) ,stage_kind VARCHAR(50) ,stage_type VARCHAR(50) ,stage_status VARCHAR(50)