IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#i2p-dev
/2023/10/12
dr|z3d …til.ShellCommand: ShellCommand execute exception for "null"
dr|z3d java.io.IOException: Cannot run program "xdg-open": error=2, No such file or directory
zzz normal
zzz eche|off, eche|on, are you in charge of 37C3 tickets this year as usual?
zzz eyedeekay, as I said the other day, runner cannot be null at ClientManager line 808. HashMaps do not allow null values.
dr|z3d maybe I haven't been paying enough attention, not seen it before.
zzz eyedeekay, may I bump to -6?
eyedeekay Go for it
Opicaak Is the exact location for 37c3 known? Or will it be announce at a later date?
zzz hamburg
Opicaak No, I know that, but the exact location, or address of the event.
zzz the big convention center, I forget what it's called, but the same place it was for years
Opicaak Found it, thanks. It's the "Congress Center Hamburg."
zzz yup
zzz if they haven't forgotten about me I should get vouchers today
Opicaak I just read a post about them sending out tickets, in case they forget, you should send them an e-mail, they'll surely send some to you.
RN so I see zzz bumped to -6 on git.idk but I'm still getting -4 with rev "d7d..." and I am on branch "master"
RN Am I doing something wrong? It seems I don't pick up the bump until another commit happens
dr|z3d where are you pulling from?
dr|z3d i2pgit.org?
dr|z3d and how are you pulling?
RN double checking...
RN ahh... I am pulling from i2pgit.org because I'm pulling through Tor
dr|z3d which is fine.
dr|z3d assuming your local branch is configured to pull from there, just do a 'git pull'
RN torify git status -uno || torify git pull i2pgit.org/i2p-hackers/i2p.i2p.git
RN am I supposed to have a .git on the end?
RN hmm
dr|z3d you don't need any of that.
dr|z3d just do a git pull
dr|z3d or torify git pull
RN the status checks first if it needs to pull, so I don't repeat pull if nothing has changed
dr|z3d git pull will tell you the same thing if your local repo is synced.
eche|on zzz: you should have gotten a email
eche|on CCC in hamburg is at the CCH, near Planen&Blomen, Hamburg Dammtor train station
eche|on zzz: if I get a voucher I can manage the tickets, sure
zzz great eche|on, no email yet though
zzz eyedeekay, what about PrintWriter??? I see no PrintWriter in that MR?
eyedeekay There is a PrintWriter in BlindCache which is used in the store() function
zzz ah, thanks for the pointer
eyedeekay so if a subDb calls store at the same time another subDb is calls store then PrintWriter is created and used twice on the same FileOutputStream
zzz give me a minute to look and I'll answer here
eyedeekay Well, file I guess, it would be different FileOutputStreams
zzz so the problem atm is you have multiple blindcaches, but they all point to the same file
zzz store() is synchronized, but that only works within a single blindcache
zzz so the file can get corrupted
zzz even if you got that working, it's still logically flawed, because they are all writing to the same filename. It wouldn't be corrupted, but the last guy to write wins, trashing the other guy's version
zzz it should be sufficient to just revert BlindCache to 2.3.0
zzz in general, of course, you don't ever want two threads writing to the same OutputStream or Writer at once. There's nothing PrintWriter can do internally to save you, it's too late
eyedeekay Maybe I'm misunderstanding what you mean but the reason we have multiple BlindCaches in the broken code is because the BlindCache is instantiated in the KNDF, so multiple netdb's turns into multiple blindcaches.
dr|z3d possibly related, but I'm seeing a huge number of blind cache keys on one router, no idea where they came from, but they're sitting there in /configkeyring
eyedeekay Definitely related dr|zed
eyedeekay Going to have it back to normal soon
zzz well
eyedeekay So I can get it back to being a single BlindCache in a bunch of ways, simplest seems to be to just keep it in the main netDb and let the clientNetDbs access it?
zzz BlindCache was working before. You didn't touch store() or get near the PrintWriter with your changes.
zzz just make sure there's a single BlindCache, and its startup() and shutdown() methods are only called ONCE.
zzz does that answer the question?
eyedeekay Yeah it does
zzz super :)
zzz eyedeekay, in general, you can assume all our code is thread-safe, with a couple exceptions:
zzz 1) if it says at the top WARNING NOT THREAD SAFE :)
zzz 2) if they are subclasses or flavors of traditionally not-thread-safe classes (InputStream, OutputStream, Readers, Writers, HashMap, List, etc)
zzz low-level I/O is never thread safe because you get mixed up garbage
zzz <eyedeekay> So I can get it back to being a single BlindCache in a bunch of ways, simplest seems to be to just keep it in the main netDb and let the clientNetDbs access it?
zzz ^^ yes, as long as the subdbs don't also try to start and stop it