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:
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
15
web/logs.go
15
web/logs.go
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user