mirror of
https://github.com/grafana/grafana.git
synced 2025-07-30 13:52:54 +08:00
Chore: Update sqleng, elasticsearch, tempo and opentsdb plugins to support contextual logs. (#57777)
* make sql engine use pick log context for logs * update tempo to get log context * update opentsdb to use log context * update es client to use log context
This commit is contained in:
@ -37,7 +37,7 @@ type SQLMacroEngine interface {
|
||||
// SqlQueryResultTransformer transforms a query result row to RowValues with proper types.
|
||||
type SqlQueryResultTransformer interface {
|
||||
// TransformQueryError transforms a query error.
|
||||
TransformQueryError(err error) error
|
||||
TransformQueryError(logger log.Logger, err error) error
|
||||
GetConverterList() []sqlutil.StringConverter
|
||||
}
|
||||
|
||||
@ -105,18 +105,18 @@ type QueryJson struct {
|
||||
Format string `json:"format"`
|
||||
}
|
||||
|
||||
func (e *DataSourceHandler) transformQueryError(err error) error {
|
||||
func (e *DataSourceHandler) transformQueryError(logger log.Logger, err error) error {
|
||||
// OpError is the error type usually returned by functions in the net
|
||||
// package. It describes the operation, network type, and address of
|
||||
// an error. We log this error rather than return it to the client
|
||||
// for security purposes.
|
||||
var opErr *net.OpError
|
||||
if errors.As(err, &opErr) {
|
||||
e.log.Error("query error", "err", err)
|
||||
logger.Error("Query error", "err", err)
|
||||
return ErrConnectionFailed
|
||||
}
|
||||
|
||||
return e.queryResultTransformer.TransformQueryError(err)
|
||||
return e.queryResultTransformer.TransformQueryError(logger, err)
|
||||
}
|
||||
|
||||
func NewQueryDataHandler(config DataPluginConfiguration, queryResultTransformer SqlQueryResultTransformer,
|
||||
@ -213,9 +213,11 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG
|
||||
refID: query.RefID,
|
||||
}
|
||||
|
||||
logger := e.log.FromContext(queryContext)
|
||||
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
e.log.Error("executeQuery panic", "error", r, "stack", log.Stack(1))
|
||||
logger.Error("ExecuteQuery panic", "error", r, "stack", log.Stack(1))
|
||||
if theErr, ok := r.(error); ok {
|
||||
queryResult.dataResponse.Error = theErr
|
||||
} else if theErrString, ok := r.(string); ok {
|
||||
@ -246,14 +248,14 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG
|
||||
// global substitutions
|
||||
interpolatedQuery, err := Interpolate(query, timeRange, e.dsInfo.JsonData.TimeInterval, queryJson.RawSql)
|
||||
if err != nil {
|
||||
errAppendDebug("interpolation failed", e.transformQueryError(err), interpolatedQuery)
|
||||
errAppendDebug("interpolation failed", e.transformQueryError(logger, err), interpolatedQuery)
|
||||
return
|
||||
}
|
||||
|
||||
// data source specific substitutions
|
||||
interpolatedQuery, err = e.macroEngine.Interpolate(&query, timeRange, interpolatedQuery)
|
||||
if err != nil {
|
||||
errAppendDebug("interpolation failed", e.transformQueryError(err), interpolatedQuery)
|
||||
errAppendDebug("interpolation failed", e.transformQueryError(logger, err), interpolatedQuery)
|
||||
return
|
||||
}
|
||||
|
||||
@ -263,12 +265,12 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG
|
||||
|
||||
rows, err := db.QueryContext(queryContext, interpolatedQuery)
|
||||
if err != nil {
|
||||
errAppendDebug("db query error", e.transformQueryError(err), interpolatedQuery)
|
||||
errAppendDebug("db query error", e.transformQueryError(logger, err), interpolatedQuery)
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
if err := rows.Close(); err != nil {
|
||||
e.log.Warn("Failed to close rows", "err", err)
|
||||
logger.Warn("Failed to close rows", "err", err)
|
||||
}
|
||||
}()
|
||||
|
||||
@ -359,7 +361,7 @@ func (e *DataSourceHandler) executeQuery(query backend.DataQuery, wg *sync.WaitG
|
||||
var err error
|
||||
frame, err = resample(frame, *qm)
|
||||
if err != nil {
|
||||
e.log.Error("Failed to resample dataframe", "err", err)
|
||||
logger.Error("Failed to resample dataframe", "err", err)
|
||||
frame.AppendNotices(data.Notice{Text: "Failed to resample dataframe", Severity: data.NoticeSeverityWarning})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user