IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#i2p-dev
/2022/08/29
dr|z3d zzz: PBQ for NTCP seems like it could do with a look
dr|z3d it doesn't matter how large you configure the buffers, at some point on a fast router they will become permanently clogged.
dr|z3d in other news, obscuratus' lookup patch appears to make a worthwhile difference to leaseset lookups.
obscuratus dr|z3d: I've got a better version of that patch. I'm testing it now.
dr|z3d great, obscuratus
dr|z3d it's been a long-standing issue that b32s especially never resolve on first attempt. good that it's getting some attention.
obscuratus I'd still like to find a more solid solution, but it's complex.
dr|z3d I think retrying is fine, not sure you need a delay specifically, maybe just a fixed number of retry attempts.
dr|z3d bumping up the floodfill lookup concurrency may help.
obscuratus dr|z3d: It's happening really fast. Just not quite fast enough.
obscuratus If you have your stats on full, check netDb.storeRecvTime. For me, I'm seeing around 1 ms.
dr|z3d Around 171 microseconds here.
obscuratus dr|z3d: Interesting data point. That's much longer than I was anticipating.
dr|z3d microseconds, obscuratus, not milliseconds :)
obscuratus Oh, good.
dr|z3d so almost 6* faster than what you're seeing.
dr|z3d I'm hitting several floodfills concurrently with the query, so that will help.
obscuratus So, your netDb.storeRecvTime is reading something like 0.171?
zzz almost to the top of my list guys
dr|z3d it reads 171m
dr|z3d m being microseconds in this context.
dr|z3d to 2 decimal places.
dr|z3d so 171.35m for example.
obscuratus So, that time is the real time elapsed for runJob in HandleFloodfillDatabaseStoreMessageJob (otherwise refered to as HFDSMJ)
obscuratus When ISJ (IterativeSearchJob) starts a search, it's asking the I2P network to reply back with a DSM (Database Store Message).
obscuratus When the DSM is processed as an incoming message, we don't send it back to the ISJ. We process it on a different thread for incoming DSMs.
dr|z3d I see mostly fail for RI lookups running via ISJ.
obscuratus ISJ tries to match it's search with the incoming DSMs.
dr|z3d Not sure if that's expected behavior.
obscuratus As soon as ISJ sees that the DSM it's looking for has come in, it declares success. But the DSM hasn't been stored yet.
obscuratus It sounds easy, but I'm finding it really hard to make ISJ wait for success to be after it's stored to the Persistent Data Store.
obscuratus dr|z3d: All callers to ISJ expect the deliverable to be a lease stored to the persistent data store. But we nearly always jump the gun on when that happens.
dr|z3d zzz will sort it, of that I'm sure. you've outlined the issue, provided a patch, and run some tests. all good. :)
dr|z3d obscuratus: yeah, I hear you. I haven't gone in quite so deep, but something around lookups has struck me as sub-optimal for a long while now.
eyedeekay zzz I have a question, is it possible for me to add/replace/remove something on the system tray menu from inside of a plugin?
eyedeekay I'm looking at the javadoc and I think I'm closing in on a way, but I'd like to know if I'm overthinking it
zzz don't think so
eyedeekay OK. I can work around it to do what I want to do by just making routerconsole.browser run my jar which is how I'm doing it in Easy-Install, but I'm not sure that's the best way for a plugin to do it
eyedeekay Maybe I just make my own traymenu for the plugin itself
zzz there's definitely no DTG API for adding/removing menu items. It's all private and hardcoded
zzz eyedeekay, please review/fixup/add to my recent roadmap edits
zzz at your convenience, no rush
eyedeekay Will do