fix: rest get messages not returning more than 1 message (#898)

This commit is contained in:
Prem Chaitanya Prathi 2023-11-14 22:54:02 +05:30 committed by GitHub
parent 392558ec8e
commit 8122cf47a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 28 deletions

View File

@ -549,7 +549,7 @@ var (
})
RESTRelayCacheCapacity = altsrc.NewIntFlag(&cli.IntFlag{
Name: "rest-relay-cache-capacity",
Value: 30,
Value: 1000,
Usage: "Capacity of the Relay REST API message cache",
Destination: &options.RESTServer.RelayCacheCapacity,
EnvVars: []string{"WAKUNODE2_REST_RELAY_CACHE_CAPACITY"},

View File

@ -124,6 +124,11 @@ func (r *RelayService) getV1Messages(w http.ResponseWriter, req *http.Request) {
return
}
var response []*RestWakuMessage
done := false
for {
if done || len(response) > int(r.cacheCapacity) {
break
}
select {
case envelope, open := <-sub.Ch:
if !open {
@ -142,9 +147,11 @@ func (r *RelayService) getV1Messages(w http.ResponseWriter, req *http.Request) {
} else {
response = append(response, message)
}
case <-req.Context().Done():
done = true
default:
break
done = true
}
}
writeErrOrResponse(w, nil, response)
@ -240,6 +247,11 @@ func (r *RelayService) getV1AutoMessages(w http.ResponseWriter, req *http.Reques
return
}
var response []*RestWakuMessage
done := false
for {
if done || len(response) > int(r.cacheCapacity) {
break
}
select {
case envelope := <-sub.Ch:
message := &RestWakuMessage{}
@ -248,8 +260,11 @@ func (r *RelayService) getV1AutoMessages(w http.ResponseWriter, req *http.Reques
} else {
response = append(response, message)
}
case <-req.Context().Done():
done = true
default:
break
done = true
}
}
writeErrOrResponse(w, nil, response)