Best way to solve the 'EDL dep graph contained a cycle' error

When trying to package my project (blueprint only) on 4.25 I stumbled upon the ’ EDL dep graph contained a cycle’ error. After some googling I came to the conclusion there must be some loop in the functions that are listed.

I’ve been debugging my blueprints for 4 days now, trying to find the loop. I tried looking for them using breakpoints, playing in editor to see if they show up. I even put nice ‘DoOnce’ nodes in all my ‘begin overlap’ events, but still no success.

The cycle errors (4 of them) seem to be part of a function library. After reading trough some of the answerhub (for some reason Google doesn’t index these pages very well) I understand the following: When a function from FunctionLibraryA calls any function from FunctionLibraryB, and a function from FunctionLibraryB calls any function from FunctionLibraryA it trows this error, even if the functions that are called are not really creating a loop (more like it can create infinite instances of the library on paper?). In older versions of the engine, people seemed to ‘solve’ this issue by disabling the ‘Use Event Driven Loader’. I assume this option was always off for me, but somehow was enabled by default in 4.25. The option is now listed as deprecated and disabling is not recommended.

I am here looking for some advise on what is the best way to proceed, so I got some questions:

  1. Is my assumption about the libraries correct or is there really a loop and am I not looking hard enough to find it?

  2. I’ve lately been cleaning up my blueprint actors by moving as much generic functions as I can to function libraries. I thought that would be a good practice and decreases development time and clutter. Keeping track of these cycle issues can get very complicated as the project goes (if I keep growing these libraries), so is this really a good practice, or are there better ways to create generic functions?

  3. I can put all the functions that have cycle errors in the same library, but how large can I grow my libraries? Even if there is no real limit or performance penalty, I liked the idea of grouping the functions in logical groups, to make it easier to organize and find them. Are there any best practices I am overlooking?

For anyone still curious on how to fix. I had to follow the logs back to the trouble object (in this case, it was an actor I had placed in the environment). I deleted that actor, rebuilt, and the level now loads as intended