PLT-3440 (#3440)
Этот коммит содержится в:
коммит произвёл
Christopher Speller
родитель
6c5a8be6bf
Коммит
b63f61fe7d
@@ -283,6 +283,11 @@ func (c *Context) LogError(err *model.AppError) {
|
||||
c.RequestId, c.Session.UserId, c.IpAddress, err.SystemMessage(utils.T), err.DetailedError)
|
||||
}
|
||||
|
||||
func (c *Context) LogDebug(err *model.AppError) {
|
||||
l4g.Debug(utils.T("api.context.log.error"), c.Path, err.Where, err.StatusCode,
|
||||
c.RequestId, c.Session.UserId, c.IpAddress, err.SystemMessage(utils.T), err.DetailedError)
|
||||
}
|
||||
|
||||
func (c *Context) UserRequired() {
|
||||
if len(c.Session.UserId) == 0 {
|
||||
c.Err = model.NewLocAppError("", "api.context.session_expired.app_error", nil, "UserRequired")
|
||||
@@ -481,7 +486,13 @@ func Handle404(w http.ResponseWriter, r *http.Request) {
|
||||
err := model.NewLocAppError("Handle404", "api.context.404.app_error", nil, "")
|
||||
err.Translate(utils.T)
|
||||
err.StatusCode = http.StatusNotFound
|
||||
l4g.Error("%v: code=404 ip=%v", r.URL.Path, GetIpAddress(r))
|
||||
|
||||
// filter out old paths that are poluting the log file
|
||||
if strings.Contains(r.URL.Path, "/api/v1/") {
|
||||
l4g.Debug("%v: code=404 ip=%v", r.URL.Path, GetIpAddress(r))
|
||||
} else {
|
||||
l4g.Error("%v: code=404 ip=%v", r.URL.Path, GetIpAddress(r))
|
||||
}
|
||||
|
||||
if IsApiCall(r) {
|
||||
w.WriteHeader(err.StatusCode)
|
||||
|
||||
@@ -6,6 +6,7 @@ package api
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
l4g "github.com/alecthomas/log4go"
|
||||
|
||||
@@ -27,11 +28,22 @@ func getClientConfig(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
func logClient(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
forceToDebug := false
|
||||
|
||||
if !*utils.Cfg.ServiceSettings.EnableDeveloper {
|
||||
forceToDebug = true
|
||||
}
|
||||
|
||||
m := model.MapFromJson(r.Body)
|
||||
|
||||
lvl := m["level"]
|
||||
msg := m["message"]
|
||||
|
||||
// filter out javascript errors from franz that are poluting the log files
|
||||
if strings.Contains(msg, "/franz") {
|
||||
forceToDebug = true
|
||||
}
|
||||
|
||||
if len(msg) > 400 {
|
||||
msg = msg[0:399]
|
||||
}
|
||||
@@ -41,7 +53,12 @@ func logClient(c *Context, w http.ResponseWriter, r *http.Request) {
|
||||
err.Message = msg
|
||||
err.Id = msg
|
||||
err.Where = "client"
|
||||
c.LogError(err)
|
||||
|
||||
if forceToDebug {
|
||||
c.LogDebug(err)
|
||||
} else {
|
||||
c.LogError(err)
|
||||
}
|
||||
}
|
||||
|
||||
ReturnStatusOK(w)
|
||||
|
||||
@@ -21,7 +21,8 @@ const SocketEvents = Constants.SocketEvents;
|
||||
import {browserHistory} from 'react-router/es6';
|
||||
|
||||
const MAX_WEBSOCKET_FAILS = 7;
|
||||
const WEBSOCKET_RETRY_TIME = 3000;
|
||||
const MIN_WEBSOCKET_RETRY_TIME = 3000; // 3 sec
|
||||
const MAX_WEBSOCKET_RETRY_TIME = 300000; // 5 mins
|
||||
|
||||
var conn = null;
|
||||
var connectFailCount = 0;
|
||||
@@ -74,8 +75,16 @@ export function initialize() {
|
||||
|
||||
connectFailCount = connectFailCount + 1;
|
||||
|
||||
var retryTime = MIN_WEBSOCKET_RETRY_TIME;
|
||||
|
||||
if (connectFailCount > MAX_WEBSOCKET_FAILS) {
|
||||
ErrorStore.storeLastError({message: Utils.localizeMessage('channel_loader.socketError', 'Please check connection, Mattermost unreachable. If issue persists, ask administrator to check WebSocket port.')});
|
||||
|
||||
// If we've failed a bunch of connections then start backing off
|
||||
retryTime = MIN_WEBSOCKET_RETRY_TIME * connectFailCount * connectFailCount;
|
||||
if (retryTime > MAX_WEBSOCKET_RETRY_TIME) {
|
||||
retryTime = MAX_WEBSOCKET_RETRY_TIME;
|
||||
}
|
||||
}
|
||||
|
||||
ErrorStore.setConnectionErrorCount(connectFailCount);
|
||||
@@ -85,7 +94,7 @@ export function initialize() {
|
||||
() => {
|
||||
initialize();
|
||||
},
|
||||
WEBSOCKET_RETRY_TIME
|
||||
retryTime
|
||||
);
|
||||
};
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user