Fix bug where max_concurrent_tasks for...
scanner queue would be initialized to 0.
This commit is contained in:
parent
6dc9345a96
commit
bbff25973e
|
@ -1,4 +1,4 @@
|
|||
|
||||
ALTER TABLE site_info
|
||||
ADD COLUMN IF NOT EXISTS periodic_scan_interval int(8) NOT NULL DEFAULT 0,
|
||||
ADD COLUMN IF NOT EXISTS concurrent_workers int(8) NOT NULL DEFAULT 3;
|
||||
ADD COLUMN IF NOT EXISTS periodic_scan_interval int(8) NOT NULL,
|
||||
ADD COLUMN IF NOT EXISTS concurrent_workers int(8) NOT NULL;
|
||||
|
|
|
@ -2,16 +2,27 @@ package models
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
func initializeSiteInfoRow(db *sql.DB) error {
|
||||
_, err := db.Exec("INSERT INTO site_info (initial_setup) VALUES (true)")
|
||||
func initializeSiteInfoRow(db *sql.DB) (*SiteInfo, error) {
|
||||
_, err := db.Exec("INSERT INTO site_info (initial_setup, periodic_scan_interval, concurrent_workers) VALUES (true, 0, 3)")
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, errors.Wrap(err, "initialize site_info row")
|
||||
}
|
||||
return nil
|
||||
|
||||
siteInfo := &SiteInfo{}
|
||||
|
||||
row := db.QueryRow("SELECT * FROM site_info")
|
||||
if err := row.Scan(&siteInfo.InitialSetup, &siteInfo.PeriodicScanInterval, &siteInfo.ConcurrentWorkers); err != nil {
|
||||
return nil, errors.Wrap(err, "get site_info row after initialization")
|
||||
}
|
||||
|
||||
return siteInfo, nil
|
||||
}
|
||||
|
||||
// GetSiteInfo gets the site info row from the database, and creates it if it does not exist
|
||||
func GetSiteInfo(db *sql.DB) (*SiteInfo, error) {
|
||||
rows, err := db.Query("SELECT * FROM site_info")
|
||||
defer rows.Close()
|
||||
|
@ -19,25 +30,19 @@ func GetSiteInfo(db *sql.DB) (*SiteInfo, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
var initialSetup bool
|
||||
var periodicScanInterval int
|
||||
var concurrentWorkers int
|
||||
siteInfo := &SiteInfo{}
|
||||
|
||||
if !rows.Next() {
|
||||
// Entry does not exist
|
||||
if err := initializeSiteInfoRow(db); err != nil {
|
||||
siteInfo, err = initializeSiteInfoRow(db)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
initialSetup = true
|
||||
} else {
|
||||
if err := rows.Scan(&initialSetup, &periodicScanInterval, &concurrentWorkers); err != nil {
|
||||
if err := rows.Scan(&siteInfo.InitialSetup, &siteInfo.PeriodicScanInterval, &siteInfo.ConcurrentWorkers); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return &SiteInfo{
|
||||
InitialSetup: initialSetup,
|
||||
PeriodicScanInterval: periodicScanInterval,
|
||||
ConcurrentWorkers: concurrentWorkers,
|
||||
}, nil
|
||||
return siteInfo, nil
|
||||
}
|
||||
|
|
|
@ -48,6 +48,8 @@ func InitializeScannerQueue(db *sql.DB) error {
|
|||
concurrentWorkers = site_info.ConcurrentWorkers
|
||||
}
|
||||
|
||||
log.Printf("Initializing scanner queue with %d workers", concurrentWorkers)
|
||||
|
||||
global_scanner_queue = ScannerQueue{
|
||||
idle_chan: make(chan bool, 1),
|
||||
in_progress: make([]ScannerJob, 0),
|
||||
|
@ -78,7 +80,7 @@ func (queue *ScannerQueue) startBackgroundWorker() {
|
|||
<-queue.idle_chan
|
||||
log.Println("Queue waiting for lock")
|
||||
queue.mutex.Lock()
|
||||
log.Println("Queue running")
|
||||
log.Printf("Queue running: in_progress: %d, max_tasks: %d, queue_len: %d\n", len(queue.in_progress), queue.settings.max_concurrent_tasks, len(queue.up_next))
|
||||
|
||||
for len(queue.in_progress) < queue.settings.max_concurrent_tasks && len(queue.up_next) > 0 {
|
||||
log.Println("Queue starting job")
|
||||
|
|
Loading…
Reference in New Issue