1
0
mirror of https://github.com/amir20/dozzle.git synced 2025-12-27 07:31:46 +01:00

Fixes error when paginating (#2027)

This commit is contained in:
Amir Raminfar
2023-01-30 12:51:39 -08:00
committed by GitHub
parent 645b9a8311
commit d330ca4746
2 changed files with 18 additions and 18 deletions

View File

@@ -12,10 +12,10 @@ import (
)
type eventGenerator struct {
reader *bufio.Reader
channel chan *LogEvent
next *LogEvent
error error
reader *bufio.Reader
channel chan *LogEvent
next *LogEvent
lastError error
}
func NewEventIterator(reader *bufio.Reader) *eventGenerator {
@@ -32,11 +32,8 @@ func (g *eventGenerator) Next() (*LogEvent, error) {
g.next = nil
nextEvent = g.Peek()
} else {
event, ok := <-g.channel
if !ok {
return nil, g.error
}
currentEvent = event
currentEvent = <-g.channel
nextEvent = g.Peek()
}
@@ -65,11 +62,11 @@ func (g *eventGenerator) Next() (*LogEvent, error) {
currentEvent.Position = END
}
return currentEvent, nil
return currentEvent, g.lastError
}
func (g *eventGenerator) LastError() error {
return g.error
return g.lastError
}
func (g *eventGenerator) Peek() *LogEvent {
@@ -117,7 +114,7 @@ func (g *eventGenerator) consume() {
if readerError != nil {
close(g.channel)
g.error = readerError
g.lastError = readerError
break
}
}

View File

@@ -66,12 +66,14 @@ func (h *handler) fetchLogsBetweenDates(w http.ResponseWriter, r *http.Request)
for {
logEvent, readerError := iterator.Next()
if readerError != nil {
break
}
if err := json.NewEncoder(w).Encode(logEvent); err != nil {
log.Errorf("json encoding error while streaming %v", err.Error())
}
if readerError != nil {
break
}
}
}
@@ -138,9 +140,7 @@ func (h *handler) streamLogs(w http.ResponseWriter, r *http.Request) {
for {
logEvent, err := iterator.Next()
if err != nil {
break
}
if buf, err := json.Marshal(logEvent); err != nil {
log.Errorf("json encoding error while streaming %v", err.Error())
} else {
@@ -151,6 +151,9 @@ func (h *handler) streamLogs(w http.ResponseWriter, r *http.Request) {
}
fmt.Fprintf(w, "\n")
f.Flush()
if err != nil {
break
}
}