sql: use logging functionality from plugin-sdk (#79294)

This commit is contained in:
Gábor Farkas 2023-12-14 09:42:06 +01:00 committed by GitHub
parent ee82801843
commit 53863c52ca
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 35 additions and 30 deletions

View File

@ -15,14 +15,14 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana-plugin-sdk-go/data/sqlutil" "github.com/grafana/grafana-plugin-sdk-go/data/sqlutil"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
"github.com/grafana/grafana/pkg/tsdb/sqleng/proxyutil" "github.com/grafana/grafana/pkg/tsdb/sqleng/proxyutil"
) )
func ProvideService(cfg *setting.Cfg) *Service { func ProvideService(cfg *setting.Cfg) *Service {
logger := log.New("tsdb.postgres") logger := backend.NewLoggerWith("logger", "tsdb.postgres")
s := &Service{ s := &Service{
tlsManager: newTLSManager(logger, cfg.DataPath), tlsManager: newTLSManager(logger, cfg.DataPath),
logger: logger, logger: logger,

View File

@ -15,7 +15,6 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
@ -141,7 +140,7 @@ func TestIntegrationGenerateConnectionString(t *testing.T) {
t.Run(tt.desc, func(t *testing.T) { t.Run(tt.desc, func(t *testing.T) {
svc := Service{ svc := Service{
tlsManager: &tlsTestManager{settings: tt.tlsSettings}, tlsManager: &tlsTestManager{settings: tt.tlsSettings},
logger: log.New("tsdb.postgres"), logger: backend.NewLoggerWith("logger", "tsdb.postgres"),
} }
ds := sqleng.DataSourceInfo{ ds := sqleng.DataSourceInfo{
@ -226,7 +225,7 @@ func TestIntegrationPostgres(t *testing.T) {
queryResultTransformer := postgresQueryResultTransformer{} queryResultTransformer := postgresQueryResultTransformer{}
logger := log.New("postgres.test") logger := backend.NewLoggerWith("logger", "postgres.test")
exe, err := sqleng.NewQueryDataHandler(cfg, config, &queryResultTransformer, newPostgresMacroEngine(dsInfo.JsonData.Timescaledb), exe, err := sqleng.NewQueryDataHandler(cfg, config, &queryResultTransformer, newPostgresMacroEngine(dsInfo.JsonData.Timescaledb),
logger) logger)

View File

@ -9,8 +9,8 @@ import (
"sync" "sync"
"time" "time"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/infra/fs" "github.com/grafana/grafana/pkg/infra/fs"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
) )

View File

@ -9,7 +9,8 @@ import (
"testing" "testing"
"time" "time"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
@ -25,7 +26,7 @@ func TestDataSourceCacheManager(t *testing.T) {
cfg := setting.NewCfg() cfg := setting.NewCfg()
cfg.DataPath = t.TempDir() cfg.DataPath = t.TempDir()
mng := tlsManager{ mng := tlsManager{
logger: log.New("tsdb.postgres"), logger: backend.NewLoggerWith("logger", "tsdb.postgres"),
dsCacheInstance: datasourceCacheManager{locker: newLocker()}, dsCacheInstance: datasourceCacheManager{locker: newLocker()},
dataPath: cfg.DataPath, dataPath: cfg.DataPath,
} }
@ -242,7 +243,7 @@ func TestGetTLSSettings(t *testing.T) {
var settings tlsSettings var settings tlsSettings
var err error var err error
mng := tlsManager{ mng := tlsManager{
logger: log.New("tsdb.postgres"), logger: backend.NewLoggerWith("logger", "tsdb.postgres"),
dsCacheInstance: datasourceCacheManager{locker: newLocker()}, dsCacheInstance: datasourceCacheManager{locker: newLocker()},
dataPath: cfg.DataPath, dataPath: cfg.DataPath,
} }

View File

@ -20,7 +20,7 @@ import (
mssql "github.com/microsoft/go-mssqldb" mssql "github.com/microsoft/go-mssqldb"
_ "github.com/microsoft/go-mssqldb/azuread" _ "github.com/microsoft/go-mssqldb/azuread"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/mssql/utils" "github.com/grafana/grafana/pkg/tsdb/mssql/utils"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
@ -40,7 +40,7 @@ const (
) )
func ProvideService(cfg *setting.Cfg) *Service { func ProvideService(cfg *setting.Cfg) *Service {
logger := log.New("tsdb.mssql") logger := backend.NewLoggerWith("logger", "tsdb.mssql")
return &Service{ return &Service{
im: datasource.NewInstanceManager(newInstanceSettings(cfg, logger)), im: datasource.NewInstanceManager(newInstanceSettings(cfg, logger)),
logger: logger, logger: logger,
@ -140,8 +140,16 @@ func newInstanceSettings(cfg *setting.Cfg, logger log.Logger) datasource.Instanc
} }
} }
// ParseURL is called also from pkg/api/datasource/validation.go,
// which uses a different logging interface,
// so we have a special minimal interface that is fulfilled by
// both places.
type DebugOnlyLogger interface {
Debug(msg string, args ...interface{})
}
// ParseURL tries to parse an MSSQL URL string into a URL object. // ParseURL tries to parse an MSSQL URL string into a URL object.
func ParseURL(u string, logger log.Logger) (*url.URL, error) { func ParseURL(u string, logger DebugOnlyLogger) (*url.URL, error) {
logger.Debug("Parsing MSSQL URL", "url", u) logger.Debug("Parsing MSSQL URL", "url", u)
// Recognize ODBC connection strings like host\instance:1234 // Recognize ODBC connection strings like host\instance:1234

View File

@ -15,7 +15,6 @@ import (
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/infra/db" "github.com/grafana/grafana/pkg/infra/db"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/services/sqlstore/sqlutil" "github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
@ -60,7 +59,7 @@ func TestMSSQL(t *testing.T) {
RowLimit: 1000000, RowLimit: 1000000,
} }
logger := log.New("mssql.test") logger := backend.NewLoggerWith("logger", "mssql.test")
endpoint, err := sqleng.NewQueryDataHandler(setting.NewCfg(), config, &queryResultTransformer, newMssqlMacroEngine(), logger) endpoint, err := sqleng.NewQueryDataHandler(setting.NewCfg(), config, &queryResultTransformer, newMssqlMacroEngine(), logger)
require.NoError(t, err) require.NoError(t, err)
@ -1340,7 +1339,7 @@ func TestTransformQueryError(t *testing.T) {
{err: randomErr, expectedErr: randomErr}, {err: randomErr, expectedErr: randomErr},
} }
logger := log.New("mssql.test") logger := backend.NewLoggerWith("logger", "mssql.test")
for _, tc := range tests { for _, tc := range tests {
resultErr := transformer.TransformQueryError(logger, tc.err) resultErr := transformer.TransformQueryError(logger, tc.err)
@ -1477,7 +1476,7 @@ func TestGenerateConnectionString(t *testing.T) {
}, },
} }
logger := log.New("mssql.test") logger := backend.NewLoggerWith("logger", "mssql.test")
for _, tc := range testCases { for _, tc := range testCases {
t.Run(tc.desc, func(t *testing.T) { t.Run(tc.desc, func(t *testing.T) {

View File

@ -7,7 +7,7 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/backend/gtime" "github.com/grafana/grafana-plugin-sdk-go/backend/gtime"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
) )

View File

@ -7,7 +7,6 @@ import (
"time" "time"
"github.com/grafana/grafana-plugin-sdk-go/backend" "github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
@ -15,7 +14,7 @@ import (
func TestMacroEngine(t *testing.T) { func TestMacroEngine(t *testing.T) {
engine := &mySQLMacroEngine{ engine := &mySQLMacroEngine{
logger: log.New("test"), logger: backend.NewLoggerWith("logger", "test"),
userError: "inspect Grafana server log for details", userError: "inspect Grafana server log for details",
} }
query := &backend.DataQuery{} query := &backend.DataQuery{}
@ -195,7 +194,7 @@ func TestMacroEngine(t *testing.T) {
} }
func TestMacroEngineConcurrency(t *testing.T) { func TestMacroEngineConcurrency(t *testing.T) {
engine := newMysqlMacroEngine(log.New("test"), setting.NewCfg()) engine := newMysqlMacroEngine(backend.NewLoggerWith("logger", "test"), setting.NewCfg())
query1 := backend.DataQuery{ query1 := backend.DataQuery{
JSON: []byte{}, JSON: []byte{},
} }

View File

@ -21,8 +21,8 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana-plugin-sdk-go/data/sqlutil" "github.com/grafana/grafana-plugin-sdk-go/data/sqlutil"
"github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/infra/httpclient" "github.com/grafana/grafana/pkg/infra/httpclient"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
"github.com/grafana/grafana/pkg/tsdb/sqleng/proxyutil" "github.com/grafana/grafana/pkg/tsdb/sqleng/proxyutil"
@ -45,7 +45,7 @@ func characterEscape(s string, escapeChar string) string {
} }
func ProvideService(cfg *setting.Cfg, httpClientProvider httpclient.Provider) *Service { func ProvideService(cfg *setting.Cfg, httpClientProvider httpclient.Provider) *Service {
logger := log.New("tsdb.mysql") logger := backend.NewLoggerWith("logger", "tsdb.mysql")
return &Service{ return &Service{
im: datasource.NewInstanceManager(newInstanceSettings(cfg, logger)), im: datasource.NewInstanceManager(newInstanceSettings(cfg, logger)),
logger: logger, logger: logger,

View File

@ -13,7 +13,6 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/sqleng" "github.com/grafana/grafana/pkg/tsdb/sqleng"
) )
@ -74,8 +73,7 @@ func TestIntegrationMySQL(t *testing.T) {
rowTransformer := mysqlQueryResultTransformer{} rowTransformer := mysqlQueryResultTransformer{}
logger := log.New("mysql.test") logger := backend.NewLoggerWith("logger", "mysql.test")
exe, err := sqleng.NewQueryDataHandler(setting.NewCfg(), config, &rowTransformer, newMysqlMacroEngine(logger, setting.NewCfg()), logger) exe, err := sqleng.NewQueryDataHandler(setting.NewCfg(), config, &rowTransformer, newMysqlMacroEngine(logger, setting.NewCfg()), logger)
require.NoError(t, err) require.NoError(t, err)

View File

@ -17,7 +17,8 @@ import (
"github.com/grafana/grafana-plugin-sdk-go/data" "github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana-plugin-sdk-go/data/sqlutil" "github.com/grafana/grafana-plugin-sdk-go/data/sqlutil"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana-plugin-sdk-go/backend/log"
corelog "github.com/grafana/grafana/pkg/infra/log"
"github.com/grafana/grafana/pkg/setting" "github.com/grafana/grafana/pkg/setting"
"github.com/grafana/grafana/pkg/tsdb/intervalv2" "github.com/grafana/grafana/pkg/tsdb/intervalv2"
"github.com/grafana/grafana/pkg/util/errutil" "github.com/grafana/grafana/pkg/util/errutil"
@ -231,7 +232,7 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG
defer func() { defer func() {
if r := recover(); r != nil { if r := recover(); r != nil {
logger.Error("ExecuteQuery panic", "error", r, "stack", log.Stack(1)) logger.Error("ExecuteQuery panic", "error", r, "stack", corelog.Stack(1))
if theErr, ok := r.(error); ok { if theErr, ok := r.(error); ok {
queryResult.dataResponse.Error = theErr queryResult.dataResponse.Error = theErr
} else if theErrString, ok := r.(string); ok { } else if theErrString, ok := r.(string); ok {

View File

@ -12,7 +12,7 @@ import (
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/grafana/grafana/pkg/infra/log" "github.com/grafana/grafana-plugin-sdk-go/backend/log"
"github.com/grafana/grafana/pkg/tsdb/sqleng/util" "github.com/grafana/grafana/pkg/tsdb/sqleng/util"
) )
@ -397,14 +397,14 @@ func TestSQLEngine(t *testing.T) {
expectedErr error expectedErr error
expectQueryResultTransformerWasCalled bool expectQueryResultTransformerWasCalled bool
}{ }{
{err: &net.OpError{Op: "Dial"}, expectedErr: ErrConnectionFailed, expectQueryResultTransformerWasCalled: false}, {err: &net.OpError{Op: "Dial", Err: fmt.Errorf("inner-error")}, expectedErr: ErrConnectionFailed, expectQueryResultTransformerWasCalled: false},
{err: randomErr, expectedErr: randomErr, expectQueryResultTransformerWasCalled: true}, {err: randomErr, expectedErr: randomErr, expectQueryResultTransformerWasCalled: true},
} }
for _, tc := range tests { for _, tc := range tests {
transformer := &testQueryResultTransformer{} transformer := &testQueryResultTransformer{}
dp := DataSourceHandler{ dp := DataSourceHandler{
log: log.New("test"), log: backend.NewLoggerWith("logger", "test"),
queryResultTransformer: transformer, queryResultTransformer: transformer,
} }
resultErr := dp.TransformQueryError(dp.log, tc.err) resultErr := dp.TransformQueryError(dp.log, tc.err)