zzz
eyedeekay, I forgot to ask yesterday, following our process improvements, please confirm you are good with the checkin deadline w.r.t. Android
eyedeekay
Yes I'm OK with the checkin deadline zzz, thanks for asking
lbt
Heya! I switched apparmor to enforcing and am getting a single DENIED when starting up the router about operation="file_mmap" profile="system_i2p" name="/usr/lib/jvm/java-11-openjdk-amd64/lib/server/classes.jsa". From the looks the router seems to be running fine. But is there something not in memory now that should/needs be loaded there or similar? This is under Debian with the project's packages, so should
lbt
be kinda ... standardish I assume?
lbt
apparmor.d/abstactions/i2p states # */client/classes.jsa is only found (and needed) in 32-bit JVMs.
lbt
So should this even be loaded then?
lbt
Oh, sry, that's client not server/classes
zzz
beats me, that note is from kytv, 2015
lbt
I searched the repo for "classes.jsa" and that line is the only match :o
zzz
it's a jvm thing
zzz
I guess
lbt
You see anything I can/should do here?
zzz
and I don't know why the line is in there twice
zzz
change it to /usr/lib/jvm/**/classes.jsa?
lbt
will check
zzz
let me know if it works and I'll squeeze it into the release tomorrow
lbt
will do
dr|z3d
got a recurrent error on one router, zzz, not seeing it anywhere else: cake.i2p/view/ZeRLiLnAR7_25kVKFuhRF1Vbof1MV32ztgJ38ZDQ1_4y1kep7G7c/ZeRLiLnAR7.txt
lbt
It's now a single line "/usr/lib/jvm/**/classes.jsa m," and with that a restart happens without any message from apparmor
zzz
great, thanks lbt, will check it in
zzz
dr|z3d, is that router firewalled?
dr|z3d
no, zzz.
zzz
hmph. looking...
zzz
SSU 1 ...
zzz
oh yeah I got it like crazy too
zzz
good catch
dr|z3d
*thumbs up*
zzz
mostly been testing with SSU 1 disabled
dr|z3d
got some routers with ssu1 disabled, some with it still enabled.
lbt
"however Trac still available for now." (from i2p-projekt.i2p/en/get-involved/guides/new-developers) - is this still true? I had tried to reach the trac site to see if my account there is still active, but wasn't able to reach it in several attempts ...
dr|z3d
trac is dead.
lbt
thx4confirming
dr|z3d
tickets have been imported into gitlab.
zzz
dr|z3d, not so simple a fix; I'm averaging about 1 NPE/hr so I'm going to test for a few hours and then push and let you know so you can try it too
lbt
Hm, I've changed the docu page (gitlab gui) to reflect that trac isn't around anymore. At least some, the variable for the URL is still named trac and I didn not touch that (yet). I'm struggling to find guidance on how I would commit that, however - the GUI offers "commit to master branch/create new branch" with a ticked "start new merge request" after forking the project. Should I just press "commit" there,
lbt
is there some guide how to do it better (?), or should I just leave you guys alone so you can release? ;) I want to learn how to do this at some point though, it feels like docu is niche where I could actually contribute some ...
zzz
dunno, I always do it via ssh
dr|z3d
roger that, zzz.
dr|z3d
have you got the your own git repo locally, lbt?
lbt
Not yet, but that wouldn't be a problem. I'm unaware how to create merge-requests from there, though
dr|z3d
assuming you have a clone of the remote repo, and you have a gitlab acct, you'd just push to your own repo and then send over a merge request via gitlab's ui.
lbt
Oki, on it
dr|z3d
I've added error level log events to the critical log section, zzz, which makes for easier identification of potential issues.
zzz
yeah I've just been so busy I haven't been updating and monitoring all my routers enough
zzz
lesson learned
dr|z3d
without error logs appearing in critical, I'd probably have missed that error.
zzz
I have different configs on all of them so I need to check them all. I just grep the logs
zzz
the systray popup works great for local router
dr|z3d
fair enough, don't have that enabled here.
zzz
very hard to miss when it's popping off
zzz
saved me more than once
zzz
recommended
dr|z3d
yeah, I think I'd find that too distracting. Having critical and error logs persist serves more or less the same goal without being so invasive :)
zzz
if I've f'ed up I want invasive
dr|z3d
:)
dr|z3d
gitlab.com/i2pplus/I2P.Plus/-/commit/69c72a5bf3f05b0bb30f03e6c497ef1d48f54a50 is where I added error level logs to the critical section.
lbt
Seeing how long the first clone takes ... has the "git cannot resume" been much of a problem? I remember it was "the" argument against git years ago ...
zzz
unlikely to succeed lbt, clone from GH then switch origin, or use the bootstrap "bundle" or whatever it's called that idk created. search my forum for howtos
lbt
Receiving objects: 56% - let me try this to the end first ;)
zzz
there's that time 15 years ago dr|z3d checked in all his build jars...
zzz
eyedeekay, your GPG key expired 4 days ago, please renew and provide a link
lbt
It did work though :) Took a good while, but ...
zzz
nice. I gave up on i2p.plugins.firefox the other day and complained to eyedeekay about it
zzz
eyedeekay, actually, that was probably why t-bird was complaining, not eche's key
zzz
my subkeys are expiring soon, I gotta do it too
eyedeekay
Yeah we're all on close to the same schedule, I'll update mine today
eyedeekay
I removed all the BLob's from the git history for i2p.plugins.firefox so the size is reduced considerably, but the build times are way up
eyedeekay
And it's a little more complicated because of the Go parts of the setup script, going to work around this by using the profile release artifacts when the Go tools aren't present
eyedeekay
As far as cloning, the trick is to clone to --depth=1 then cd to the directory and unshallow, unshallow is resumable
zzz
now I have divergent branches in i2p.plugins.firefox
lbt
eyedeekay: I found your blog post git-over-i2p, where you have described that, thx :)
zzz
but I've never committed anything there
zzz
I guess I just pull with --rebase ?
zzz
I'm still such a git noob
zzz
On branch main
zzz
Your branch and 'origin/main' have diverged,
zzz
and have 868 and 1083 different commits each, respectively.
zzz
(use "git pull" to merge the remote branch into yours)
lbt
How can you even have differing commits if you never committed?
zzz
right
zzz
eyedeekay, your commit to i2p.i2p yesterday was after the checkin deadline, which either is very no bueno if it's not for the release, or very no bueno for not telling me if it is
zzz
which is it?
eyedeekay
It is for the release
eyedeekay
It needs to be there for Maven, I did a local maven test and found it
eyedeekay
Sorry for not pinging you about it, will next time, thanks for asking
eyedeekay
Re: git commits being different that is a side-effect of the blob removal, you can `git pull --force` to blow away the the differing ones
zzz
eyedeekay, that's a fundamental process violation, let's do better
zzz
I ran mavenCentral.deps earlier in the week...
zzz
retrying...
eyedeekay
It's for the part where I have to build with override.properties and the alternative classpath
zzz
right but mavenCentral.deps should do the same thing, that's what I added to my process
zzz
mavenCentral.deps worked
zzz
so I'm not sure what's different
zzz
why did you not catch it before the checkin deadline?
eyedeekay
I hadn't built using the override.properties in a while, I was doing Java 19 builds.
eyedeekay
Re different: I was using ant mavenLocal && ./build/installer/maven-dev-release.sh
eyedeekay
javac.compilerargs=-bootclasspath .../openjdk-7/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/rt.jar:.../usr/lib/jvm/java-7-openjdk-amd64/jre/lib/jce.jar
eyedeekay
I do maven builds with java-1.8.0-openjdk-amd64 and that in my override.properties
zzz
mavenCentral.deps calls forceJava7 target but I guess that's not sufficient w/o bootclasspath
eyedeekay
I guess not? I'm not sure, and I'm timid about doing it differently because I don't want to break downstreams again, this is the way which I know works for any Android apps that embed us, for the F-Droid main C/D and all that
eyedeekay
That said, if I do a mavenLocal build with Java 19 it seems to not result in the same predictable 11-minute crash as when it's built with the wrong bootclasspath when I turn it into an Android app
eyedeekay
But I've only used that on my own device, when I upload to maven I make sure I've got the whole chain configured first
zzz
have you thoroughly tested your changes?
zzz
because I need to stare at them a little more
eyedeekay
On Android yes, and I'm using a local build with them now on my laptop, the only thing I did was unwrap putIfAbsent into a check(containsKey) and either a put+get or just a get
zzz
on further review, I'm not happy with the changes at all. There was a much easier fix. I think we need to delay the release by at least a day to straighten it all out, plus the NPE fix for today
zzz
you really should have talked to me before, not just after, your fix
zzz
you really went off in the weeds on thios
eyedeekay
I apologize, I will next time
eyedeekay
I considered other approaches, I'm interested to know if I thought about what I should have done
eyedeekay
I also thought about either changing the Map to a concrete type, or factored the putIfAbsent out to a function and put it in all three places?
eyedeekay
*method
zzz
just declare _recentlyClosedIDs as a ConcurrentHashMap instead of a Map. oneliner. I'll fix it
zzz
but still can't get mavenCentral.deps to fail even with bootclasspath
eyedeekay
I have no idea why, I got this bootclasspath from you, and you got it from Debian jessie IIRC?
zzz
right
zzz
oh wait, it's a LHMCache, not a ConcurrentHashMap
zzz
that might be harder
eyedeekay
That's why I didn't do the concrete type approach, I tried CHM and then it broke because it needed to be passed to another function as a LHMCache
zzz
yeah I forgot it's a LinkedHashMap. putIfAbsent is in Map as of Java 8
zzz
ok, good, I have it failing now with bootclasspath
zzz
will update my checklist
eyedeekay
Thanks
zzz
dr|z3d, NPE fix pushed, please test on a SSU1-enabled router
zzz
ok now lets look at this putIfAbsent thing
eyedeekay
I just realized I made a big mistake, if (_recentlyClosedConnIDs.containsKey(id)){ should be if (!_recentlyClosedConnIDs.containsKey(id)){
eyedeekay
I will refrain from pushing it until you ack or choose a different solution to the underlying issue
zzz
yeah, don't ever push (or even commit without pushing) after checkin deadline without asking, becasue it won't be in the release, and people looking at the history will think it is
zzz
that's why it's against the rules
zzz
and for anything non-trivial it's going to delay the release
zzz
lets pull up xxdiff and see what's going on here
zzz
ok
zzz
aside from the bug
zzz
your version is bad because it's accessing the map either twice or 3 times, depending
zzz
so I believe the best way is:
zzz
old = map.put(new)
zzz
if (old != null)
zzz
map.put(old); // put back the old one
zzz
so that gets us back to once in the usual case, or twice in the unlikely case of a dup
eyedeekay
OK I get it, I just did what seemed obvious "check first then put" but the put-and-put-back-if-not-null makes sense
eyedeekay
That's pretty cool
zzz
ok, I'll code it up and test it and push as -16-rc
zzz
eche|on, release pushed to tuesday
zzz
you're clear on the release process now, right? This was really bad. The only reason I noticed was I tried to push the NPE fix so dr|z3d could test it
eyedeekay
If I catch something during this period before release, don't check it in, ping you
zzz
super
dr|z3d
thx, zzz, will test.
zzz
hold off 5 minutes for -16
dr|z3d
what about idk's latest commits, are they going to be backed out?
dr|z3d
10 4.
zzz
not backed out, just rewrite/fix
dr|z3d
ok
zzz
there you go dr|z3d
zzz
thanks for testing
dr|z3d
thx
dr|z3d
so we've pushed back the release until Tuesday?
zzz
ja
dr|z3d
okies
zzz
looks like i2pd point release will be Wed.
dr|z3d
ok, good. some useful new stuff since the 2.1.0 i2pd release.
zzz
2.45.0 -> .1
dr|z3d
yeah, that.
zzz
the naive approach:
zzz
if (!map.containsKey(id))
zzz
map.put(id, new)
zzz
requires 2 accesses in the common case (no dups) and 1 in case of dups
zzz
3 accesses are never required, which made the previous code a headscratcher
zzz
my way works because we're under a lock; if we weren't under a lock, it would be a CHM and we'd have putIfAbsent()