netdb isolation issues
As I understand it, the point of the recent changes is for each client to have its own netdb.
But the following methods in FNDS iterate through ALL known netdbs (some have a deprecation log, why?)
getKnownRouterData() search() complete() getFloodfillPeers() isVerifyInProgress() verifyStarted() verifyFinished() lookupBeforeDropping()
These iterate through all only if DBID param is null or "" (why7 DBID is undocumented -see #406 (closed)) They also lookup in the main DB TWICE - because the main DB is in the _subdbs map, and then the code explicitly looks up in main DB.
lookupLocally() lookupLocallyWithoutValidation() lookupLeasesetLocally()
also getKnownRouters(), getRouters(), blindData methods, ...
this is all very inefficient and appears to negate/sandbag the very isolation you're trying to provide. Isolation would imply you never ever ever (or almost never) iterate thru all the subdbs for anything.
They aren't ALL somehow "old" methods code shouldn't be calling anymore (after all, some of them DO have DBID params). This is a new standalone class, it doesn't extend FNDF. (although see #402 (closed) I'm not sure that's the right call or that any of this code is in the right place).
So a whole lot of the FNDS methods look a little sus, maybe remnants of a long dev history, not sure. I suggest you carefully scrub and document every one of these methods. Which ones iterate thru all subdbs, which ones don't, which do depending on the dbid arg. And don't ever access the main db twice.
Since FNDS does not extend FNDF you don't need methods that are "deprecated" in logging-only. If they're bad, delete them, and fix the rest.