You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
findIncompletePublicationsPublishedBefore and similar methods do something like: entityManager....getResultStream().map(...).toList(). The toList() part here can cause a memory leak if there are zillions of events to process (e.g. the event handler is constantly failing). Paging is missing (e.g. OFFSET...LIMIT)
I had a similar expensive, production bug in custom-made transactional outbox, because of exactly the same problem!
The same problem likely exists in other publication repository implementations (e.g. JDBC).
Another issue I see is order by p.publicationDate asc - after adding paging it will make Denial of Service attacks pretty easy (when all events in a page end with processing error, eventually no further events can be processed). Instead some form of exponential backoff and/or randomness should be used.
Version: 1.3.1
The text was updated successfully, but these errors were encountered:
findIncompletePublicationsPublishedBefore
and similar methods do something like:entityManager....getResultStream().map(...).toList()
. ThetoList()
part here can cause a memory leak if there are zillions of events to process (e.g. the event handler is constantly failing). Paging is missing (e.g.OFFSET...LIMIT
)I had a similar expensive, production bug in custom-made transactional outbox, because of exactly the same problem!
The same problem likely exists in other publication repository implementations (e.g. JDBC).
Another issue I see is
order by p.publicationDate asc
- after adding paging it will make Denial of Service attacks pretty easy (when all events in a page end with processing error, eventually no further events can be processed). Instead some form of exponential backoff and/or randomness should be used.Version: 1.3.1
The text was updated successfully, but these errors were encountered: