mirror of
https://github.com/Quiq/docker-registry-ui.git
synced 2025-07-21 01:19:11 +00:00
Add event_deletion_enabled option to the config, useful for master-master/cluster setups
This commit is contained in:
parent
fe0f3e28e8
commit
d5b6669eee
@ -30,6 +30,10 @@ event_database_location: data/registry_events.db
|
|||||||
# event_database_driver: mysql
|
# event_database_driver: mysql
|
||||||
# event_database_location: user:password@tcp(localhost:3306)/docker_events
|
# event_database_location: user:password@tcp(localhost:3306)/docker_events
|
||||||
|
|
||||||
|
# You can disable event deletion on some hosts when you are running docker-registry on master-master or
|
||||||
|
# cluster setup to avoid deadlocks or replication break.
|
||||||
|
event_deletion_enabled: True
|
||||||
|
|
||||||
# Cache refresh interval in minutes.
|
# Cache refresh interval in minutes.
|
||||||
# How long to cache repository list and tag counts.
|
# How long to cache repository list and tag counts.
|
||||||
cache_refresh_interval: 10
|
cache_refresh_interval: 10
|
||||||
|
@ -10,6 +10,7 @@ import (
|
|||||||
|
|
||||||
"github.com/hhkbp2/go-logging"
|
"github.com/hhkbp2/go-logging"
|
||||||
"github.com/quiq/docker-registry-ui/registry"
|
"github.com/quiq/docker-registry-ui/registry"
|
||||||
|
|
||||||
// 🐒 patching of "database/sql".
|
// 🐒 patching of "database/sql".
|
||||||
_ "github.com/go-sql-driver/mysql"
|
_ "github.com/go-sql-driver/mysql"
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "github.com/mattn/go-sqlite3"
|
||||||
@ -35,6 +36,7 @@ type EventListener struct {
|
|||||||
databaseDriver string
|
databaseDriver string
|
||||||
databaseLocation string
|
databaseLocation string
|
||||||
retention int
|
retention int
|
||||||
|
eventDeletion bool
|
||||||
logger logging.Logger
|
logger logging.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -54,11 +56,12 @@ type EventRow struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewEventListener initialize EventListener.
|
// NewEventListener initialize EventListener.
|
||||||
func NewEventListener(databaseDriver, databaseLocation string, retention int) *EventListener {
|
func NewEventListener(databaseDriver, databaseLocation string, retention int, eventDeletion bool) *EventListener {
|
||||||
return &EventListener{
|
return &EventListener{
|
||||||
databaseDriver: databaseDriver,
|
databaseDriver: databaseDriver,
|
||||||
databaseLocation: databaseLocation,
|
databaseLocation: databaseLocation,
|
||||||
retention: retention,
|
retention: retention,
|
||||||
|
eventDeletion: eventDeletion,
|
||||||
logger: registry.SetupLogging("events.event_listener"),
|
logger: registry.SetupLogging("events.event_listener"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -112,6 +115,9 @@ func (e *EventListener) ProcessEvents(request *http.Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Purge old records.
|
// Purge old records.
|
||||||
|
if !e.eventDeletion {
|
||||||
|
return
|
||||||
|
}
|
||||||
var res sql.Result
|
var res sql.Result
|
||||||
if e.databaseDriver == "mysql" {
|
if e.databaseDriver == "mysql" {
|
||||||
stmt, _ := db.Prepare("DELETE FROM events WHERE created < DATE_SUB(NOW(), INTERVAL ? DAY)")
|
stmt, _ := db.Prepare("DELETE FROM events WHERE created < DATE_SUB(NOW(), INTERVAL ? DAY)")
|
||||||
|
5
main.go
5
main.go
@ -31,6 +31,7 @@ type configData struct {
|
|||||||
EventRetentionDays int `yaml:"event_retention_days"`
|
EventRetentionDays int `yaml:"event_retention_days"`
|
||||||
EventDatabaseDriver string `yaml:"event_database_driver"`
|
EventDatabaseDriver string `yaml:"event_database_driver"`
|
||||||
EventDatabaseLocation string `yaml:"event_database_location"`
|
EventDatabaseLocation string `yaml:"event_database_location"`
|
||||||
|
EventDeletionEnabled bool `yaml:"event_deletion_enabled"`
|
||||||
CacheRefreshInterval uint8 `yaml:"cache_refresh_interval"`
|
CacheRefreshInterval uint8 `yaml:"cache_refresh_interval"`
|
||||||
AnyoneCanDelete bool `yaml:"anyone_can_delete"`
|
AnyoneCanDelete bool `yaml:"anyone_can_delete"`
|
||||||
Admins []string `yaml:"admins"`
|
Admins []string `yaml:"admins"`
|
||||||
@ -128,7 +129,9 @@ func main() {
|
|||||||
if a.config.EventDatabaseDriver != "sqlite3" && a.config.EventDatabaseDriver != "mysql" {
|
if a.config.EventDatabaseDriver != "sqlite3" && a.config.EventDatabaseDriver != "mysql" {
|
||||||
panic(fmt.Errorf("event_database_driver should be either sqlite3 or mysql"))
|
panic(fmt.Errorf("event_database_driver should be either sqlite3 or mysql"))
|
||||||
}
|
}
|
||||||
a.eventListener = events.NewEventListener(a.config.EventDatabaseDriver, a.config.EventDatabaseLocation, a.config.EventRetentionDays)
|
a.eventListener = events.NewEventListener(
|
||||||
|
a.config.EventDatabaseDriver, a.config.EventDatabaseLocation, a.config.EventRetentionDays, a.config.EventDeletionEnabled,
|
||||||
|
)
|
||||||
|
|
||||||
// Template engine init.
|
// Template engine init.
|
||||||
e := echo.New()
|
e := echo.New()
|
||||||
|
Loading…
Reference in New Issue
Block a user