This reverts commit 280bc7f97e.
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
6a9c4ad56b
Коммит
ea3ff49b35
@@ -286,7 +286,6 @@ func (ps *PlatformService) LimitedClientConfigWithComputed() map[string]string {
|
||||
// These properties are not configurable, but nevertheless represent configuration expected
|
||||
// by the client.
|
||||
respCfg["NoAccounts"] = strconv.FormatBool(ps.IsFirstUserAccount())
|
||||
respCfg["DebugBar"] = strconv.FormatBool(ps.DebugBar.IsEnabled())
|
||||
|
||||
return respCfg
|
||||
}
|
||||
@@ -301,7 +300,6 @@ func (ps *PlatformService) ClientConfigWithComputed() map[string]string {
|
||||
// These properties are not configurable, but nevertheless represent configuration expected
|
||||
// by the client.
|
||||
respCfg["NoAccounts"] = strconv.FormatBool(ps.IsFirstUserAccount())
|
||||
respCfg["DebugBar"] = strconv.FormatBool(ps.DebugBar.IsEnabled())
|
||||
respCfg["MaxPostSize"] = strconv.Itoa(ps.MaxPostSize())
|
||||
respCfg["UpgradedFromTE"] = strconv.FormatBool(ps.isUpgradedFromTE())
|
||||
respCfg["InstallationDate"] = ""
|
||||
|
||||
@@ -1,100 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package debugbar
|
||||
|
||||
import (
|
||||
"io"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mail"
|
||||
)
|
||||
|
||||
const (
|
||||
socketEventName = "debugbar"
|
||||
)
|
||||
|
||||
type DebugBar struct {
|
||||
publish func(*model.WebSocketEvent)
|
||||
enabled bool
|
||||
}
|
||||
|
||||
func New(publish func(*model.WebSocketEvent)) *DebugBar {
|
||||
return &DebugBar{
|
||||
publish: publish,
|
||||
enabled: os.Getenv("MM_ENABLE_DEBUG_BAR") == "true",
|
||||
}
|
||||
}
|
||||
|
||||
func (db *DebugBar) IsEnabled() bool {
|
||||
return db.enabled
|
||||
}
|
||||
|
||||
func (db *DebugBar) SendLogEvent(logLevel string, logMessage string, fields map[string]string) {
|
||||
event := model.NewWebSocketEvent(socketEventName, "", "", "", nil, "")
|
||||
event.Add("time", model.GetMillis())
|
||||
event.Add("type", "log-line")
|
||||
event.Add("level", logLevel)
|
||||
event.Add("message", logMessage)
|
||||
event.Add("fields", fields)
|
||||
db.publish(event)
|
||||
}
|
||||
|
||||
func (db *DebugBar) SendApiCall(endpoint, method, statusCode string, elapsed float64) {
|
||||
if endpoint == "getSystemInfo" || endpoint == "getQueryExplain" {
|
||||
return
|
||||
}
|
||||
event := model.NewWebSocketEvent(socketEventName, "", "", "", nil, "")
|
||||
event.Add("time", model.GetMillis())
|
||||
event.Add("type", "api-call")
|
||||
event.Add("endpoint", endpoint)
|
||||
event.Add("method", method)
|
||||
event.Add("statusCode", statusCode)
|
||||
event.Add("duration", elapsed)
|
||||
db.publish(event)
|
||||
}
|
||||
|
||||
func (db *DebugBar) SendStoreCall(method string, success bool, elapsed float64, params map[string]any) {
|
||||
event := model.NewWebSocketEvent(socketEventName, "", "", "", nil, "")
|
||||
event.Add("time", model.GetMillis())
|
||||
event.Add("type", "store-call")
|
||||
event.Add("method", method)
|
||||
event.Add("params", params)
|
||||
event.Add("success", success)
|
||||
event.Add("duration", elapsed)
|
||||
db.publish(event)
|
||||
}
|
||||
|
||||
func (db *DebugBar) SendSqlQuery(query string, elapsed float64, args ...any) {
|
||||
if strings.HasPrefix(query, "EXPLAIN ") {
|
||||
return
|
||||
}
|
||||
event := model.NewWebSocketEvent(socketEventName, "", "", "", nil, "")
|
||||
event.Add("time", model.GetMillis())
|
||||
event.Add("type", "sql-query")
|
||||
event.Add("query", query)
|
||||
event.Add("args", args)
|
||||
event.Add("duration", elapsed)
|
||||
db.publish(event)
|
||||
}
|
||||
|
||||
func (db *DebugBar) SendEmailSent(to, subject, htmlBody string, embeddedFiles map[string]io.Reader, config *mail.SMTPConfig, enableComplianceFeatures bool, messageID string, inReplyTo string, references string, ccMail string, category string, err error) {
|
||||
event := model.NewWebSocketEvent(socketEventName, "", "", "", nil, "")
|
||||
event.Add("time", model.GetMillis())
|
||||
event.Add("type", "email-sent")
|
||||
event.Add("to", to)
|
||||
event.Add("subject", subject)
|
||||
event.Add("htmlBody", htmlBody)
|
||||
event.Add("embeddedFiles", embeddedFiles)
|
||||
event.Add("SMTPConfig", config)
|
||||
event.Add("enableComplianceFeatures", enableComplianceFeatures)
|
||||
event.Add("messageID", messageID)
|
||||
event.Add("inReplyTo", inReplyTo)
|
||||
event.Add("references", references)
|
||||
event.Add("cc", ccMail)
|
||||
event.Add("category", category)
|
||||
event.Add("err", err)
|
||||
db.publish(event)
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package debugbar
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/mattermost/logr/v2"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
type DebugBarLogTarget struct {
|
||||
debugBar *DebugBar
|
||||
}
|
||||
|
||||
type DebugBarLogFilter struct{}
|
||||
|
||||
func (_ *DebugBarLogFilter) GetEnabledLevel(level logr.Level) (logr.Level, bool) {
|
||||
return level, true
|
||||
}
|
||||
|
||||
type DebugBarLogFormatter struct{}
|
||||
|
||||
func (_ *DebugBarLogFormatter) IsStacktraceNeeded() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (_ *DebugBarLogFormatter) Format(rec *logr.LogRec, level logr.Level, buf *bytes.Buffer) (*bytes.Buffer, error) {
|
||||
return bytes.NewBuffer([]byte{}), nil
|
||||
}
|
||||
|
||||
func NewDebugBarLogTarget(debugBar *DebugBar) *DebugBarLogTarget {
|
||||
return &DebugBarLogTarget{debugBar: debugBar}
|
||||
}
|
||||
|
||||
func (dblt *DebugBarLogTarget) Init() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (dblt *DebugBarLogTarget) Shutdown() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (dblt *DebugBarLogTarget) Write(p []byte, rec *logr.LogRec) (int, error) {
|
||||
dblt.debugBar.SendLogEvent(rec.Level().Name, rec.Msg(), dblt.fieldsToStringsMap(rec.Fields()...))
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
func (dblt *DebugBarLogTarget) fieldsToStringsMap(fields ...mlog.Field) map[string]string {
|
||||
result := map[string]string{}
|
||||
for _, field := range fields {
|
||||
value := &bytes.Buffer{}
|
||||
field.ValueString(value, nil)
|
||||
result[field.Key] = value.String()
|
||||
}
|
||||
return result
|
||||
}
|
||||
@@ -13,8 +13,6 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/logr/v2"
|
||||
"github.com/mattermost/mattermost-server/v6/app/platform/debugbar"
|
||||
"github.com/mattermost/mattermost-server/v6/config"
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
@@ -80,13 +78,6 @@ func (ps *PlatformService) initLogging() error {
|
||||
}
|
||||
}
|
||||
|
||||
if ps.DebugBar.IsEnabled() {
|
||||
err := ps.logger.AddTarget(debugbar.NewDebugBarLogTarget(ps.DebugBar), "debugbar", &debugbar.DebugBarLogFilter{}, &debugbar.DebugBarLogFormatter{}, logr.DefaultMaxQueueSize)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import (
|
||||
"sync/atomic"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/app/featureflag"
|
||||
"github.com/mattermost/mattermost-server/v6/app/platform/debugbar"
|
||||
"github.com/mattermost/mattermost-server/v6/config"
|
||||
"github.com/mattermost/mattermost-server/v6/einterfaces"
|
||||
"github.com/mattermost/mattermost-server/v6/jobs"
|
||||
@@ -24,7 +23,6 @@ import (
|
||||
"github.com/mattermost/mattermost-server/v6/shared/filestore"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v6/store"
|
||||
"github.com/mattermost/mattermost-server/v6/store/debugbarlayer"
|
||||
"github.com/mattermost/mattermost-server/v6/store/localcachelayer"
|
||||
"github.com/mattermost/mattermost-server/v6/store/retrylayer"
|
||||
"github.com/mattermost/mattermost-server/v6/store/searchlayer"
|
||||
@@ -36,11 +34,9 @@ import (
|
||||
// responsible for non-entity related functionalities that are required
|
||||
// by a product such as database access, configuration access, licensing etc.
|
||||
type PlatformService struct {
|
||||
sqlStore *sqlstore.SqlStore
|
||||
DebugBar *debugbar.DebugBar
|
||||
Store store.Store
|
||||
newStore func() (store.Store, error)
|
||||
LastUserID string
|
||||
sqlStore *sqlstore.SqlStore
|
||||
Store store.Store
|
||||
newStore func() (store.Store, error)
|
||||
|
||||
WebSocketRouter *WebSocketRouter
|
||||
|
||||
@@ -129,7 +125,6 @@ func New(sc ServiceConfig, options ...Option) (*PlatformService, error) {
|
||||
licenseListeners: map[string]func(*model.License, *model.License){},
|
||||
additionalClusterHandlers: map[model.ClusterEvent]einterfaces.ClusterMessageHandler{},
|
||||
}
|
||||
ps.DebugBar = debugbar.New(ps.Publish)
|
||||
|
||||
// Step 1: Cache provider.
|
||||
// At the moment we only have this implementation
|
||||
@@ -191,7 +186,7 @@ func New(sc ServiceConfig, options ...Option) (*PlatformService, error) {
|
||||
// Depends on Step 0 (config), 1 (cacheProvider), 3 (search engine), 5 (metrics) and cluster.
|
||||
if ps.newStore == nil {
|
||||
ps.newStore = func() (store.Store, error) {
|
||||
ps.sqlStore = sqlstore.New(ps.Config().SqlSettings, ps.metricsIFace, ps.DebugBar.SendSqlQuery)
|
||||
ps.sqlStore = sqlstore.New(ps.Config().SqlSettings, ps.metricsIFace)
|
||||
|
||||
lcl, err2 := localcachelayer.NewLocalCacheLayer(
|
||||
retrylayer.New(ps.sqlStore),
|
||||
@@ -219,15 +214,10 @@ func New(sc ServiceConfig, options ...Option) (*PlatformService, error) {
|
||||
ps.sqlStore.UpdateLicense(newLicense)
|
||||
})
|
||||
|
||||
timerStore := timerlayer.New(
|
||||
return timerlayer.New(
|
||||
searchStore,
|
||||
ps.metricsIFace,
|
||||
)
|
||||
|
||||
if ps.DebugBar.IsEnabled() {
|
||||
return debugbarlayer.New(timerStore, ps.DebugBar), nil
|
||||
}
|
||||
return timerStore, nil
|
||||
), nil
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -142,8 +142,6 @@ func TestMetrics(t *testing.T) {
|
||||
mockMetricsImpl.On("Register").Return()
|
||||
mockMetricsImpl.On("ObserveStoreMethodDuration", mock.Anything, mock.Anything, mock.Anything).Return()
|
||||
mockMetricsImpl.On("RegisterDBCollector", mock.AnythingOfType("*sql.DB"), "master")
|
||||
mockMetricsImpl.On("IncrementWebsocketEvent", "debugbar")
|
||||
mockMetricsImpl.On("IncrementWebSocketBroadcastBufferSize", mock.AnythingOfType("string"), float64(1))
|
||||
|
||||
th := Setup(t, StartMetrics(), func(ps *PlatformService) error {
|
||||
ps.metricsIFace = mockMetricsImpl
|
||||
|
||||
Ссылка в новой задаче
Block a user