in plugins/storage/rdbms/init.go [150:211]
func (r *RDBMS) init() error {
driverName := "mysql"
if r.driverName != "" {
driverName = r.driverName
}
sqlDB, err := sql.Open(driverName, r.dbURI)
if err != nil {
return fmt.Errorf("could not initialize database: %w", err)
}
if err := sqlDB.Ping(); err != nil {
sqlDB.Close()
return fmt.Errorf("unable to contact database: %w", err)
}
r.db = sqlDB
r.sqlDB = sqlDB
if r.testEventsFlushInterval > 0 {
r.closeWG.Add(1)
go func() {
done := false
for !done {
select {
case <-time.After(r.testEventsFlushInterval):
if err := r.flushTestEvents(); err != nil {
log.Warningf("Failed to flush test events: %v", err)
}
case <-r.closeCh:
// Flush one last time
if err := r.flushTestEvents(); err != nil {
log.Warningf("Failed to flush test events: %v", err)
}
done = true
}
}
r.closeWG.Done()
}()
}
if r.frameworkEventsFlushInterval > 0 {
r.closeWG.Add(1)
go func() {
done := false
for !done {
select {
case <-time.After(r.frameworkEventsFlushInterval):
if err := r.flushFrameworkEvents(); err != nil {
log.Warningf("Failed to flush test events: %v", err)
}
case <-r.closeCh:
// Flush one last time
if err := r.flushFrameworkEvents(); err != nil {
log.Warningf("Failed to flush test events: %v", err)
}
done = true
}
}
r.closeWG.Done()
}()
}
return nil
}