Skip to content

Commit 1bd6f66

Browse files
author
zhongzichao
committed
fix log range (PaddlePaddle#949)
* fix log range
1 parent 18f6c87 commit 1bd6f66

File tree

5 files changed

+44
-13
lines changed

5 files changed

+44
-13
lines changed

pkg/apiserver/controller/log/cluster_log.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ func GetPFJobLogs(ctx *logger.RequestContext, request GetMixedLogRequest) (schem
5252

5353
// GetLogs return mixed logs
5454
func GetLogs(ctx *logger.RequestContext, request GetMixedLogRequest) (schema.JobLogInfo, error) {
55-
ctx.Logging().Debugf("Get mixed logs by request: %v", request)
55+
ctx.Logging().Debugf("Get mixed logs by request: %+v", request)
5656
runtimeSvc, err := runtime.GetOrCreateRuntime(request.ClusterInfo)
5757
if err != nil {
5858
err = fmt.Errorf("get cluster client failed. error:%s", err.Error())

pkg/apiserver/router/v1/log.go

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,10 @@ import (
3636
)
3737

3838
const (
39-
defaultMemory = "100MB"
39+
defaultMemory = "100M"
4040
defaultLineLimit = "1000"
41+
maxLineLimit = 1000000
42+
maxSizeLimit = "1G"
4143
)
4244

4345
type LogRouter struct {
@@ -221,7 +223,11 @@ func constructJobLogRequest(ctx *logger.RequestContext, request *http.Request) (
221223
// lineLimit, check by resource
222224
lineLimit := request.URL.Query().Get(util.QueryKeyLineLimit)
223225
if lineLimit != "" {
224-
_, err = strconv.Atoi(lineLimit)
226+
lineLimitInt, err := strconv.Atoi(lineLimit)
227+
if lineLimitInt <= 0 || lineLimitInt > maxLineLimit {
228+
log.Warnf("lineLimit is out of range")
229+
lineLimit = defaultLineLimit
230+
}
225231
if err != nil {
226232
err = fmt.Errorf("resource[%s] request param lineLimit value failed, error:%s", logRequest.Name, err.Error())
227233
ctx.Logging().Errorln(err)
@@ -234,6 +240,7 @@ func constructJobLogRequest(ctx *logger.RequestContext, request *http.Request) (
234240

235241
// SizeLimit
236242
sizeLimit := request.URL.Query().Get(util.QueryKeySizeLimit)
243+
defaultSizeLimit, _ := resources.ParseQuantity(defaultMemory)
237244
var memory resources.Quantity
238245
if sizeLimit != "" {
239246
memory, err = resources.ParseQuantity(sizeLimit)
@@ -242,10 +249,15 @@ func constructJobLogRequest(ctx *logger.RequestContext, request *http.Request) (
242249
ctx.Logging().Errorln(err)
243250
return logRequest, err
244251
}
252+
maxSizeLimitRes, _ := resources.ParseQuantity(maxSizeLimit)
253+
if memory.AsInt64() <= 0 || memory.AsInt64() > maxSizeLimitRes.AsInt64() {
254+
memory = defaultSizeLimit
255+
}
245256
} else {
246-
memory, _ = resources.ParseQuantity(defaultMemory)
257+
memory = defaultSizeLimit
247258
}
248-
logRequest.SizeLimit = memory.AsInt64()
259+
sizeLimitInt := memory.AsInt64()
260+
logRequest.SizeLimit = sizeLimitInt
249261
logRequest.ResourceType = request.URL.Query().Get(util.QueryKeyType)
250262
logRequest.Framework = request.URL.Query().Get(util.QueryKeyFramework)
251263

pkg/apiserver/router/v1/log_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,26 @@ func TestLogRouter_GetJobLog(t *testing.T) {
9090
wantErr: false,
9191
responseCode: 400,
9292
},
93+
{
94+
name: "wrong sizelimit negative",
95+
args: args{
96+
ctx: &logger.RequestContext{UserName: mockUserName},
97+
req: &Req{
98+
Name: MockJobID,
99+
Namespace: "default",
100+
ClusterName: MockClusterName,
101+
ResourceType: string(pfschema.TypePodJob),
102+
Framework: "",
103+
LineLimit: "-200",
104+
SizeLimit: "-100k",
105+
readFromTail: true,
106+
},
107+
router: router,
108+
getMixedMock: true,
109+
},
110+
wantErr: false,
111+
responseCode: 200,
112+
},
93113
{
94114
name: "normal",
95115
args: args{

pkg/common/utils/logic_paging.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,8 @@ func (l *LogPage) Paging(content string, logContentLineNum int) string {
3434
logContentLineNum = len(strings.Split(strings.TrimRight(content, "\n"), "\n"))
3535
}
3636
contentLength := len(content)
37-
38-
log.Debugf("get logs index, bytesLoaded %d, lineNumber %d, LogFilePosition %s",
39-
int64(contentLength), logContentLineNum, l.LogFilePosition)
37+
log.Debugf("Paging: get logs index, bytesLoaded %d, lineNumber %d, LogFilePosition %s, "+
38+
"lineLimit %d, sizeLimit %d", int64(contentLength), logContentLineNum, l.LogFilePosition, l.LineLimit, l.SizeLimit)
4039
startIndex, endIndex := l.Dividing(logContentLineNum, contentLength)
4140
// split log
4241
finalContent := SplitLog(content, startIndex, endIndex, false)
@@ -50,10 +49,10 @@ func (l *LogPage) SlicePaging(content []string) []string {
5049
contentByteLength += len(c)
5150
}
5251
logContentLineNum := len(content)
53-
log.Debugf("get logs index, bytesLoaded %d, lineNumber %d, LogFilePosition %s",
54-
contentByteLength, logContentLineNum, l.LogFilePosition)
52+
log.Debugf("slicePaging: get logs index, bytesLoaded %d, lineNumber %d, LogFilePosition %s, "+
53+
"lineLimit %d, sizeLimit %d", contentByteLength, logContentLineNum, l.LogFilePosition, l.LineLimit, l.SizeLimit)
5554
startIndex, endIndex := l.Dividing(logContentLineNum, contentByteLength)
56-
55+
log.Debugf("startIndex %d, endIndex %d", startIndex, endIndex)
5756
var finalContent []string
5857
if startIndex == -1 && endIndex == -1 {
5958
finalContent = content[:]

pkg/job/runtime_v2/kubernetes_runtime.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,13 +630,13 @@ func formatAllEventLogs(events []corev1.Event, logPage utils.LogPage) []string {
630630
if events[i].InvolvedObject.Name != events[j].InvolvedObject.Name {
631631
return events[i].InvolvedObject.Name < events[j].InvolvedObject.Name
632632
}
633-
return events[i].EventTime.Before(&events[j].EventTime)
633+
return events[i].CreationTimestamp.Before(&events[j].CreationTimestamp)
634634
})
635635
var formatedEvents []string
636636
for _, event := range events {
637637
//Type-Reason-Timestamp-Message
638638
str := fmt.Sprintf("type: %s\treason: %s\teventsTime: %s \tmessage: %s",
639-
event.Type, event.Reason, event.EventTime, event.Message)
639+
event.Type, event.Reason, event.CreationTimestamp.Format("2006-01-02 15:04:05"), event.Message)
640640
formatedEvents = append(formatedEvents, str)
641641
}
642642
formatedEvents = logPage.SlicePaging(formatedEvents)

0 commit comments

Comments
 (0)