mirror of
https://github.com/grafana/grafana.git
synced 2025-02-10 15:45:43 -06:00
postgres: do not use unexported grafana-core config (#83241)
* postgres: do not use unexported grafana-core config * fixed wrong value
This commit is contained in:
parent
5f89c69b66
commit
ae77fe3602
@ -28,7 +28,7 @@ func ProvideService(cfg *setting.Cfg) *Service {
|
|||||||
tlsManager: newTLSManager(logger, cfg.DataPath),
|
tlsManager: newTLSManager(logger, cfg.DataPath),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
}
|
}
|
||||||
s.im = datasource.NewInstanceManager(s.newInstanceSettings(cfg))
|
s.im = datasource.NewInstanceManager(s.newInstanceSettings())
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ func (s *Service) QueryData(ctx context.Context, req *backend.QueryDataRequest)
|
|||||||
return dsInfo.QueryData(ctx, req)
|
return dsInfo.QueryData(ctx, req)
|
||||||
}
|
}
|
||||||
|
|
||||||
func newPostgres(ctx context.Context, cfg *setting.Cfg, dsInfo sqleng.DataSourceInfo, cnnstr string, logger log.Logger, settings backend.DataSourceInstanceSettings) (*sql.DB, *sqleng.DataSourceHandler, error) {
|
func newPostgres(ctx context.Context, userFacingDefaultError string, rowLimit int64, dsInfo sqleng.DataSourceInfo, cnnstr string, logger log.Logger, settings backend.DataSourceInstanceSettings) (*sql.DB, *sqleng.DataSourceHandler, error) {
|
||||||
connector, err := pq.NewConnector(cnnstr)
|
connector, err := pq.NewConnector(cnnstr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("postgres connector creation failed", "error", err)
|
logger.Error("postgres connector creation failed", "error", err)
|
||||||
@ -82,7 +82,7 @@ func newPostgres(ctx context.Context, cfg *setting.Cfg, dsInfo sqleng.DataSource
|
|||||||
config := sqleng.DataPluginConfiguration{
|
config := sqleng.DataPluginConfiguration{
|
||||||
DSInfo: dsInfo,
|
DSInfo: dsInfo,
|
||||||
MetricColumnTypes: []string{"UNKNOWN", "TEXT", "VARCHAR", "CHAR"},
|
MetricColumnTypes: []string{"UNKNOWN", "TEXT", "VARCHAR", "CHAR"},
|
||||||
RowLimit: cfg.DataProxyRowLimit,
|
RowLimit: rowLimit,
|
||||||
}
|
}
|
||||||
|
|
||||||
queryResultTransformer := postgresQueryResultTransformer{}
|
queryResultTransformer := postgresQueryResultTransformer{}
|
||||||
@ -93,7 +93,7 @@ func newPostgres(ctx context.Context, cfg *setting.Cfg, dsInfo sqleng.DataSource
|
|||||||
db.SetMaxIdleConns(config.DSInfo.JsonData.MaxIdleConns)
|
db.SetMaxIdleConns(config.DSInfo.JsonData.MaxIdleConns)
|
||||||
db.SetConnMaxLifetime(time.Duration(config.DSInfo.JsonData.ConnMaxLifetime) * time.Second)
|
db.SetConnMaxLifetime(time.Duration(config.DSInfo.JsonData.ConnMaxLifetime) * time.Second)
|
||||||
|
|
||||||
handler, err := sqleng.NewQueryDataHandler(cfg.UserFacingDefaultError, db, config, &queryResultTransformer, newPostgresMacroEngine(dsInfo.JsonData.Timescaledb),
|
handler, err := sqleng.NewQueryDataHandler(userFacingDefaultError, db, config, &queryResultTransformer, newPostgresMacroEngine(dsInfo.JsonData.Timescaledb),
|
||||||
logger)
|
logger)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed connecting to Postgres", "err", err)
|
logger.Error("Failed connecting to Postgres", "err", err)
|
||||||
@ -104,20 +104,25 @@ func newPostgres(ctx context.Context, cfg *setting.Cfg, dsInfo sqleng.DataSource
|
|||||||
return db, handler, nil
|
return db, handler, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) newInstanceSettings(cfg *setting.Cfg) datasource.InstanceFactoryFunc {
|
func (s *Service) newInstanceSettings() datasource.InstanceFactoryFunc {
|
||||||
logger := s.logger
|
logger := s.logger
|
||||||
return func(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
return func(ctx context.Context, settings backend.DataSourceInstanceSettings) (instancemgmt.Instance, error) {
|
||||||
logger.Debug("Creating Postgres query endpoint")
|
cfg := backend.GrafanaConfigFromContext(ctx)
|
||||||
|
sqlCfg, err := cfg.SQL()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
jsonData := sqleng.JsonData{
|
jsonData := sqleng.JsonData{
|
||||||
MaxOpenConns: cfg.SqlDatasourceMaxOpenConnsDefault,
|
MaxOpenConns: sqlCfg.DefaultMaxOpenConns,
|
||||||
MaxIdleConns: cfg.SqlDatasourceMaxIdleConnsDefault,
|
MaxIdleConns: sqlCfg.DefaultMaxIdleConns,
|
||||||
ConnMaxLifetime: cfg.SqlDatasourceMaxConnLifetimeDefault,
|
ConnMaxLifetime: sqlCfg.DefaultMaxConnLifetimeSeconds,
|
||||||
Timescaledb: false,
|
Timescaledb: false,
|
||||||
ConfigurationMethod: "file-path",
|
ConfigurationMethod: "file-path",
|
||||||
SecureDSProxy: false,
|
SecureDSProxy: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
err := json.Unmarshal(settings.JSONData, &jsonData)
|
err = json.Unmarshal(settings.JSONData, &jsonData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("error reading settings: %w", err)
|
return nil, fmt.Errorf("error reading settings: %w", err)
|
||||||
}
|
}
|
||||||
@ -143,7 +148,12 @@ func (s *Service) newInstanceSettings(cfg *setting.Cfg) datasource.InstanceFacto
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, handler, err := newPostgres(ctx, cfg, dsInfo, cnnstr, logger, settings)
|
userFacingDefaultError, err := cfg.UserFacingDefaultError()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, handler, err := newPostgres(ctx, userFacingDefaultError, sqlCfg.RowLimit, dsInfo, cnnstr, logger, settings)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("Failed connecting to Postgres", "err", err)
|
logger.Error("Failed connecting to Postgres", "err", err)
|
||||||
|
@ -16,7 +16,6 @@ import (
|
|||||||
"github.com/grafana/grafana-plugin-sdk-go/experimental"
|
"github.com/grafana/grafana-plugin-sdk-go/experimental"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
"github.com/grafana/grafana/pkg/setting"
|
|
||||||
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
"github.com/grafana/grafana/pkg/tsdb/sqleng"
|
||||||
|
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
@ -143,10 +142,6 @@ func TestIntegrationPostgresSnapshots(t *testing.T) {
|
|||||||
return sql
|
return sql
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg := setting.NewCfg()
|
|
||||||
cfg.DataPath = t.TempDir()
|
|
||||||
cfg.DataProxyRowLimit = 10000
|
|
||||||
|
|
||||||
jsonData := sqleng.JsonData{
|
jsonData := sqleng.JsonData{
|
||||||
MaxOpenConns: 0,
|
MaxOpenConns: 0,
|
||||||
MaxIdleConns: 2,
|
MaxIdleConns: 2,
|
||||||
@ -164,7 +159,7 @@ func TestIntegrationPostgresSnapshots(t *testing.T) {
|
|||||||
|
|
||||||
cnnstr := getCnnStr()
|
cnnstr := getCnnStr()
|
||||||
|
|
||||||
db, handler, err := newPostgres(context.Background(), cfg, dsInfo, cnnstr, logger, backend.DataSourceInstanceSettings{})
|
db, handler, err := newPostgres(context.Background(), "error", 10000, dsInfo, cnnstr, logger, backend.DataSourceInstanceSettings{})
|
||||||
|
|
||||||
t.Cleanup((func() {
|
t.Cleanup((func() {
|
||||||
_, err := db.Exec("DROP TABLE tbl")
|
_, err := db.Exec("DROP TABLE tbl")
|
||||||
|
@ -191,10 +191,6 @@ func TestIntegrationPostgres(t *testing.T) {
|
|||||||
return sql
|
return sql
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg := setting.NewCfg()
|
|
||||||
cfg.DataPath = t.TempDir()
|
|
||||||
cfg.DataProxyRowLimit = 10000
|
|
||||||
|
|
||||||
jsonData := sqleng.JsonData{
|
jsonData := sqleng.JsonData{
|
||||||
MaxOpenConns: 0,
|
MaxOpenConns: 0,
|
||||||
MaxIdleConns: 2,
|
MaxIdleConns: 2,
|
||||||
@ -212,7 +208,7 @@ func TestIntegrationPostgres(t *testing.T) {
|
|||||||
|
|
||||||
cnnstr := postgresTestDBConnString()
|
cnnstr := postgresTestDBConnString()
|
||||||
|
|
||||||
db, exe, err := newPostgres(context.Background(), cfg, dsInfo, cnnstr, logger, backend.DataSourceInstanceSettings{})
|
db, exe, err := newPostgres(context.Background(), "error", 10000, dsInfo, cnnstr, logger, backend.DataSourceInstanceSettings{})
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
@ -1266,9 +1262,7 @@ func TestIntegrationPostgres(t *testing.T) {
|
|||||||
|
|
||||||
t.Run("When row limit set to 1", func(t *testing.T) {
|
t.Run("When row limit set to 1", func(t *testing.T) {
|
||||||
dsInfo := sqleng.DataSourceInfo{}
|
dsInfo := sqleng.DataSourceInfo{}
|
||||||
conf := setting.NewCfg()
|
_, handler, err := newPostgres(context.Background(), "error", 1, dsInfo, cnnstr, logger, backend.DataSourceInstanceSettings{})
|
||||||
conf.DataProxyRowLimit = 1
|
|
||||||
_, handler, err := newPostgres(context.Background(), conf, dsInfo, cnnstr, logger, backend.DataSourceInstanceSettings{})
|
|
||||||
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user