Jelajahi Sumber

db object in worker main

Mohammed Nafees 3 tahun lalu
induk
melakukan
cfbefa7025
3 mengubah file dengan 15 tambahan dan 28 penghapusan
  1. 1 19
      internal/adapter/gorm.go
  2. 1 7
      workers/jobs/helm_revisions_count_tracker.go
  3. 13 2
      workers/main.go

+ 1 - 19
internal/adapter/gorm.go

@@ -14,14 +14,8 @@ import (
 	"gorm.io/gorm"
 )
 
-var globalDBConn *gorm.DB
-
 // New returns a new gorm database instance
 func New(conf *env.DBConf) (*gorm.DB, error) {
-	if globalDBConn != nil {
-		return globalDBConn, nil
-	}
-
 	logger := logger.New(
 		log.New(os.Stdout, "\r\n", log.LstdFlags),
 		logger.Config{
@@ -34,19 +28,11 @@ func New(conf *env.DBConf) (*gorm.DB, error) {
 	if conf.SQLLite {
 		// we add DisableForeignKeyConstraintWhenMigrating since our sqlite does
 		// not support foreign key constraints
-		res, err := gorm.Open(sqlite.Open(conf.SQLLitePath), &gorm.Config{
+		return gorm.Open(sqlite.Open(conf.SQLLitePath), &gorm.Config{
 			DisableForeignKeyConstraintWhenMigrating: true,
 			FullSaveAssociations:                     true,
 			Logger:                                   logger,
 		})
-
-		if err != nil {
-			return nil, err
-		}
-
-		globalDBConn = res
-
-		return res, nil
 	}
 
 	// connect to default postgres instance first
@@ -100,8 +86,6 @@ func New(conf *env.DBConf) (*gorm.DB, error) {
 			}
 
 			if err == nil {
-				globalDBConn = res
-
 				return res, nil
 			}
 
@@ -109,7 +93,5 @@ func New(conf *env.DBConf) (*gorm.DB, error) {
 		}
 	}
 
-	globalDBConn = res
-
 	return res, err
 }

+ 1 - 7
workers/jobs/helm_revisions_count_tracker.go

@@ -33,7 +33,6 @@ import (
 	"github.com/porter-dev/porter/provisioner/integrations/storage/s3"
 
 	"github.com/porter-dev/porter/ee/integrations/vault"
-	"github.com/porter-dev/porter/internal/adapter"
 	"github.com/porter-dev/porter/internal/helm"
 	"github.com/porter-dev/porter/internal/kubernetes"
 	"github.com/porter-dev/porter/internal/models"
@@ -77,15 +76,10 @@ type HelmRevisionsCountTrackerOpts struct {
 }
 
 func NewHelmRevisionsCountTracker(
+	db *gorm.DB,
 	enqueueTime time.Time,
 	opts *HelmRevisionsCountTrackerOpts,
 ) (*helmRevisionsCountTracker, error) {
-	db, err := adapter.New(opts.DBConf)
-
-	if err != nil {
-		return nil, err
-	}
-
 	var credBackend rcreds.CredentialStorage
 
 	if opts.DBConf.VaultAPIKey != "" && opts.DBConf.VaultServerURL != "" && opts.DBConf.VaultPrefix != "" {

+ 13 - 2
workers/main.go

@@ -16,13 +16,16 @@ import (
 	"github.com/go-chi/chi/middleware"
 	"github.com/joeshaw/envdecode"
 	"github.com/porter-dev/porter/api/server/shared/config/env"
+	"github.com/porter-dev/porter/internal/adapter"
 	"github.com/porter-dev/porter/internal/worker"
 	"github.com/porter-dev/porter/workers/jobs"
+	"gorm.io/gorm"
 )
 
 var (
 	jobQueue   chan worker.Job
 	envDecoder = EnvConf{}
+	dbConn     *gorm.DB
 )
 
 // EnvConf holds the environment variables for this binary
@@ -50,12 +53,20 @@ func main() {
 	log.Printf("setting max worker count to: %d\n", envDecoder.MaxWorkers)
 	log.Printf("setting max job queue count to: %d\n", envDecoder.MaxQueue)
 
+	db, err := adapter.New(&envDecoder.DBConf)
+
+	if err != nil {
+		log.Fatalln(err)
+	}
+
+	dbConn = db
+
 	jobQueue = make(chan worker.Job, envDecoder.MaxQueue)
 	d := worker.NewDispatcher(int(envDecoder.MaxWorkers))
 
 	log.Println("starting worker dispatcher")
 
-	err := d.Run(jobQueue)
+	err = d.Run(jobQueue)
 
 	if err != nil {
 		log.Fatalln(err)
@@ -134,7 +145,7 @@ func httpService() http.Handler {
 
 func getJob(id string) worker.Job {
 	if id == "helm-revisions-count-tracker" {
-		newJob, err := jobs.NewHelmRevisionsCountTracker(time.Now().UTC(), &jobs.HelmRevisionsCountTrackerOpts{
+		newJob, err := jobs.NewHelmRevisionsCountTracker(dbConn, time.Now().UTC(), &jobs.HelmRevisionsCountTrackerOpts{
 			DBConf:             &envDecoder.DBConf,
 			DOClientID:         envDecoder.DOClientID,
 			DOClientSecret:     envDecoder.DOClientSecret,