victori has quit [Quit: ZNC 1.8.2 - https://znc.in]
victori has joined #jruby
TimGitter[m]1 has quit [Ping timeout: 244 seconds]
<enebo[m]1> headius: I have been changing those over time...intellij gives a warning in every file that it is a danngling javadoc
JulesIvanicGitte has quit [Ping timeout: 240 seconds]
TimGitter[m]1 has joined #jruby
<enebo[m]1> I will look to see if Arity has any extra imports anywhere. In many cases Arity is still in the same files because of deprecated methods but I may have missed some
<headius[m]> Ok maybe we should just do a single pass and fix them all
<headius[m]> It looked like random formatting change in the pr
JulesIvanicGitte has joined #jruby
<enebo[m]1> To be fair it is only a minor annoyance to see the yellow tick at the top of the file but I do see some value in the warning if we increase how much javadocs we have since it will catch when we format poorly (like add annotation above or something)
<headius[m]> Yeah fine with me
<enebo[m]1> So although I am done for tonight I always see some questionable suggestions
<enebo[m]1> ALLOCATORS will get the suggestion to use lambdas instead
<headius[m]> Yeah they all could switch over
<headius[m]> Fewer classes to ship
nirvdrum has quit [Ping timeout: 264 seconds]
TimGitter[m]1 has quit [*.net *.split]
kalenp[m] has quit [*.net *.split]
boc_tothefuture[ has quit [*.net *.split]
kalenp[m] has joined #jruby
TimGitter[m]1 has joined #jruby
boc_tothefuture[ has joined #jruby
_whitelogger has joined #jruby
lopex has quit [Quit: Connection closed for inactivity]
travis-ci has left #jruby [#jruby]
<travis-ci> jruby/jruby (master:6199049 by Karol Bucek): The build has errored. https://travis-ci.com/jruby/jruby/builds/218806200 [209 min 9 sec]
travis-ci has joined #jruby
nirvdrum has joined #jruby
lopex has joined #jruby
lopex is now known as Guest79714
Guest79714 is now known as lopex
<headius[m]> good morning!
nirvdrum has quit [Ping timeout: 245 seconds]
nirvdrum has joined #jruby
<headius[m]> enebo: I made a 9.2.17.0 milestone to punt the Psych upgrade... I am still trying to get Psych's test suite greener on JRuby and I'm waiting on input from tenderlove and asomov (from SnakeYAML)
<headius[m]> users can install and use newer psych any time so it is really just about getting it upgraded in JRuby without excluding more tests
<headius[m]> hmm in fact I will see if I can push the psych stuff forward today
<enebo[m]1> ok
<enebo[m]1> so today meaning you are punting but may have a gem install they can do which is the finished product?
<headius[m]> the released gem fixes the one issue we had reported, but installing it in our build causes more tests to fail than before... so users can use the gem and it should be fine, but until I am satisfied we pass as much as we can I won't upgrade the version we ship
<headius[m]> first I had heard of these issues with Sorbet in JRuby but at least two of them should be small fixes (one in jossl though)
<headius[m]> the packaging issue will be a bigger deal (see my comment on the Sorbet issue)
<headius[m]> enebo: that one could get merged in but without other fixes for Sorbet it may not be valuable
<headius[m]> I can't believe we've had a rogue "IPsocket" constant for so long
<enebo[m]1> I am already building bits
<headius[m]> full speed ahead
<enebo[m]1> That is a carrot for 9.3 :)
<enebo[m]1> but if we do want it for 9.2 then we should get it in with longer period of time before we release it
<headius[m]> this one should be super benign... it is not a constant anyone would ever look for
<headius[m]> we define IPSocket but also IPsocket, which apparently confuses Sorbet
<enebo[m]1> yeah just land it for .16 since it is that benign but not a bit issue for getting into .15
<headius[m]> enebo: oh land it?
<headius[m]> I thought you were already releasing
<enebo[m]1> no I mean land it right after I push tags
<enebo[m]1> so it will be in .16
<headius[m]> no we are releasing .16 today
<enebo[m]1> I was originally saying just leave it for 9.3 but it is pretty benign
<enebo[m]1> hahaha I mean .17
<headius[m]> so land it for .17
<headius[m]> at least I hope we are releasing .16 today
<enebo[m]1> sorry I can see .16 whizzing by me...I was off-by-one
<headius[m]> ok
<travis-ci> jruby/jruby (master:bb5a9ab by Thomas E Enebo): The build failed. https://travis-ci.com/jruby/jruby/builds/218868005 [206 min 17 sec]
travis-ci has joined #jruby
travis-ci has left #jruby [#jruby]
sagax has joined #jruby
<headius[m]> new Element is doing some weird justification of text
<enebo[m]1> headius: https://travis-ci.com/github/jruby/jruby/jobs/487806796 something on master with sockopt change recently?
<headius[m]> it only failed on JDK14 and I saw it only fail on 11 the other day
<headius[m]> I don't know what is up... it should not be flaky
<enebo[m]1> interesting so maybe something sometimes returning nil or something
<enebo[m]1> The error looks like it wants an integer so nil would be my guess
<enebo[m]1> I like that rails 6.1 in dev mode puts response time graphic in upper left corner
<headius[m]> perhaps but it just gets a socket option using native getsockopt for this case
<headius[m]> using the real fileno... so sometimes it can't get the real fileno? It doesn't make sense that it would be flaky unless something is wrong with the test
<headius[m]> actually if it could not get real fileno here it would raise
<headius[m]> so far it has been intermittent fail on 11 and 14 but I don't recall seeing it until recently
<enebo[m]1> return runtime.newFixnum(unpackInt(data));
<enebo[m]1> unless there is some dummy Option where int() -> nil then this should always be a fixnum which should be an integer
<headius[m]> where is that
<enebo[m]1> Option#int
<headius[m]> hmm
<enebo[m]1> It is possible I am at wrong getsockopt? but it appears to create an Option
<headius[m]> those bytes come from a ByteBuffer used to read the getsockopt data
<headius[m]> you are at the right place
<headius[m]> the bytelist even copies the bytes out
<headius[m]> oh I might see something odd
<headius[m]> len is never flipped
<enebo[m]1> but even so newFixnum will not make a bignum will it?
<headius[m]> no
<headius[m]> but the error says it looks like zero width, not larger than int width
<headius[m]> which could be this len
<headius[m]> but why wouldn't it always fail
<enebo[m]1> => 190: assert_instance_of(Integer, socket.getsockopt(Socket::SOL_TCP, Socket::TCP_KEEPINTVL).int)
<headius[m]> if int is not flipped then it will get the length of the data bytes from uninitialized area of the IntBuffer
subbu is now known as subbu|away
<headius[m]> which should probably be zero.... but it should be zero all the time
<enebo[m]1> lol: Error: test_tcp_socket_get_keep_intvl(SocketTest): TypeError: size differ. expected as sizeof(int)=4 but 0
<enebo[m]1> org/jruby/ext/socket/Option.java:208:in `int'
<enebo[m]1> I missed the actual error raised
<headius[m]> this seems like a bug but it should always fail
<enebo[m]1> perhaps it lucks out because something it zeroed or something but not always
<enebo[m]1> like some extra data from that point on is still 4 bytes long and a valid value?
<headius[m]> that is the only thing I can think of
<headius[m]> but JVM not zeroing out an IntBuffer?
<headius[m]> that seems really weird
<enebo[m]1> The tests are interesting inf that they do not care what the value is
<enebo[m]1> just that it is any integer
<headius[m]> I will push this change, maybe it goes away
<headius[m]> super(-1, 0, lim, cap, new int[cap], 0);
<headius[m]> it should definitely have been zeroed out
<enebo[m]1> if you run it from CLI do you see rando value?
<enebo[m]1> hmm
<enebo[m]1> and not reused?
<headius[m]> it is created new shortly before that
<enebo[m]1> heh
<headius[m]> so the bug is it reads from where the buffer was after the call rather than reading what was put in the buffer
<enebo[m]1> Some native bytebuffer bug in jdk :)
<headius[m]> but I have no explanation for random failure
<headius[m]> it is not even native
<headius[m]> that line above is from HeapIntBuffer constructor
<enebo[m]1> heh
<headius[m]> it is literally just an int[]
<enebo[m]1> ok well weird
<headius[m]> which is guaranteed to be zeroed
<headius[m]> yeah weird
<headius[m]> but this is a bug either way
<headius[m]> also jeez I have been doing this too long if I notice a missing flip
<headius[m]> bytelist does not need to copy here either
<headius[m]> this scope owns that ByteBuffer and it is not native so could just use the underlying array
<headius[m]> I will run this locally and push
<headius[m]> maybe it copies so it is not dragging a byte[256] around with the option
<headius[m]> 🤷‍♂️
<enebo[m]1> 0?
<enebo[m]1> This is coming from getsocketoption
<enebo[m]1> it runs unconditionally through packInt or packLinger
<enebo[m]1> both will push values onto the bytelist
<enebo[m]1> the length check is bytelist.realSize
<headius[m]> yeah I don't see any problem with that part
<headius[m]> just this len.get without a flip
<headius[m]> and technically it should use buf.position() instead of assuming 0 but we know it is zero
<enebo[m]1> yeah so the other part would be that we are somehow monkey patching over something in Ruby and not doing what we think we are
<headius[m]> hmm
<enebo[m]1> intialize also will set data to whatever is the fourth arg
<headius[m]> now I am wondering if the flip is actually necessary
<headius[m]> if they were native buffers, then the underlying memory would be passed to getsockopt and there would be no way to know how many bytes were written to them
<headius[m]> so flip would be incorrect since the ByteBuffer fields would still say position = 0
<headius[m]> but these are heap buffers so they get copied into after the call
<headius[m]> or by an explicit write in the JNI logic maybe
<headius[m]> oh I can't test this on macos
<headius[m]> there is no SOL_TCP
<headius[m]> enebo: can you step into this and see if the buffer actually needs to be flipped?
<enebo[m]1> are you sure this is not too late
<headius[m]> if either buffer is not at position=0 after the call they need to be flipped
<enebo[m]1> validateDataSize happens before unpackInt
<headius[m]> yeah I don't think there's any problem in Option
<enebo[m]1> but the raise happens before the bytebuffer part
<enebo[m]1> data is just checked to see if realSize == 4 and it is 0
<headius[m]> where do you see that validateDataSize
<enebo[m]1> in int()
<enebo[m]1> asInt in Option
<headius[m]> Ruby method int calls rb_int
<headius[m]> not asInt
<headius[m]> oh wait
<enebo[m]1> why? it is a no arg version of int right?
<headius[m]> wtf who named these
<headius[m]> but yeah that is still the same bug
<headius[m]> the bytelist gets len = 0 sometimes and so its length is 0
<headius[m]> my fix would still be appropriate if these do indeed need to be flippped
<headius[m]> flipppppped
<enebo[m]1> I just don't see how it could based on how Option is created
<enebo[m]1> data if it comes from rubybasicsocket will be realzise of 4 or 8
<enebo[m]1> going to windows back in 2-3 minutes
<headius[m]> if you're lucky
<headius[m]> I will push fix to branch to make sure it doesn't break worse
<headius[m]> but I would like to know for sure that the flip is necessary
<enebo[m]1> I am still confused why flip is the issue
<headius[m]> because if the len IntBuffer received a value it would no longer be at position = 0 and int.get would get nothing but 0s
<headius[m]> it needs to be flipped so int.get reads from position 0
<headius[m]> I don't know if it is the issue but it is an issue
<headius[m]> it just confuses me that it doesn't always fail
<enebo[m]1> but the error comes from validateDataSize which is not getting the unpack treatment yet
<headius[m]> yes, because the ByteList created with int.get as its length ends up zero length
<headius[m]> which then doesn't validate
<headius[m]> nothing to do with the unpack
<headius[m]> the bug is in getsockopt, not in Option
<enebo[m]1> so you are saying packInt called from getSockOpt is the problem
<headius[m]> no
<headius[m]> I am saying missing flip in RubyBasicSocket.getsockopt is the problem
<headius[m]> I guess you are not looking at the right method
<headius[m]> I linked the code above
<enebo[m]1> so getSocketOption impl?
<headius[m]> no
<headius[m]> RubyBasicSocket.getsockopt
<enebo[m]1> I have been staring at that for minutes
<enebo[m]1> it gets some int value back and then presumably does a packInt
<headius[m]> I have no idea what you are looking at
<enebo[m]1> HAHA I just realized I am looking at 9.2...I am doing a release after all
<enebo[m]1> Sorry. It just didn't occur to me :)
<headius[m]> oh jeez, yeah none of this exists in 9.2
<enebo[m]1> funny
<enebo[m]1> ok well that was a waste
<headius[m]> I pushed better_223_messages branch
<headius[m]> ugh what I am on wrong branch
<enebo[m]1> it is contagious!
<headius[m]> ok so branch name is wrong but whatever
<enebo[m]1> It is more up to date than mine
<headius[m]> I will cherry pick fix to master if this looks ok
<headius[m]> if you get a chance, step debug into this and see if the buffers need flip
<headius[m]> it works most of the time so I assume they do
<headius[m]> the fix is a good find but I have no confidence it is the cause of that intermittent failure
<enebo[m]1> yeah this afternoon with any luck
<enebo[m]1> lunch
travis-ci has joined #jruby
<travis-ci> jruby/jruby (better_223_messages:b5e1c5a by Charles Oliver Nutter): The build failed. https://travis-ci.com/jruby/jruby/builds/218882472 [206 min 3 sec]
travis-ci has left #jruby [#jruby]
<headius[m]> ok this was not the right fix
<headius[m]> someone needs to step into this on Linux
<headius[m]> reddit.com/r/ruby/comments/lx0t1p/static_typing_jruby_apps_including_jvm_libraries/
<headius[m]> you know, if we had reworked JRuby so that you could bind `initialize` to object constructors, we could mark way more object state as final
subbu|away is now known as subbu
tychobrailleur has joined #jruby
tychobrailleur has left #jruby [#jruby]
subbu is now known as subbu|afk
<enebo[m]1> headius: jeremyevans Freaky I just sent an email to release. Curious if you all see it.
<headius[m]> enebo: I do not
<headius[m]> checking spam
<headius[m]> nothing in spam
<jeremyevans> enebo[m]1: I got an email that I had to allow access to send to the email address, which I did
<headius[m]> perhaps this should be another mailman list on ruby-lang.org
<enebo[m]1> jeremyevans: yeah that appears to be a new feature of forwarding but now it looks like forwarding to multiple addresses is done via a filter
<enebo[m]1> Let me mess around a few more minutes...I already made this account
<headius[m]> ok
<enebo[m]1> I am not sure if we can make a new address there or we would have to ask so this may be simpler
<headius[m]> we would have to ask
<headius[m]> someone presumably has mailman admin privileges but it is not us
<enebo[m]1> ok I have this almost figured out. I can see the list of names once I set a filter but I need to fill in some criteria
<enebo[m]1> I think I will narrow this to [ANN] which I always add to annoucements and then just add this into jruby@ and ruby-talk@
<enebo[m]1> This will also prevent us from getting arbtrary spam somewhat
<headius[m]> yeah that sounds fine
subbu|afk is now known as subbu
<headius[m]> enebo: got it
<travis-ci> jruby/jruby (last_success:678a355 by Hiro Asari): The build has errored. (https://travis-ci.com/jruby/jruby/builds/218895837)
travis-ci has left #jruby [#jruby]
travis-ci has joined #jruby
<enebo[m]1> headius: thanks.
travis-ci has joined #jruby
travis-ci has left #jruby [#jruby]
<travis-ci> jruby/jruby (localhead:5b6ae21 by Charles Oliver Nutter): The build has errored. (https://travis-ci.com/jruby/jruby/builds/218895839)
<enebo[m]1> hmm I think I pushed that tag
<headius[m]> localhead? wat
<enebo[m]1> Removed it
<headius[m]> oh ok
<enebo[m]1> or I am
<headius[m]> and last_success got back in there
<enebo[m]1> I pushed two more removed tags
<headius[m]> let me know when they are removed so I can safely pull again
<enebo[m]1> done
travis-ci has joined #jruby
<travis-ci> jruby/jruby (jruby-9.2:f82228d by Thomas E. Enebo): The build was broken. https://travis-ci.com/jruby/jruby/builds/218895828 [177 min 12 sec]
travis-ci has left #jruby [#jruby]
<headius[m]> deploy
<headius[m]> 🙄
<enebo[m]1> headius: for some reason I think it never passes with the full non-snapshot release
<travis-ci> jruby/jruby (9.2.16.0:f82228d by Thomas E. Enebo): The build failed. https://travis-ci.com/jruby/jruby/builds/218895863 [176 min 47 sec]
travis-ci has joined #jruby
travis-ci has left #jruby [#jruby]
<enebo[m]1> LOL
<enebo[m]1> WHY YOU LAUGH AT ME GOD!!!!
<headius[m]> hahah
<headius[m]> put you in your place
<enebo[m]1> Although I still stand by the above statement
<headius[m]> huh that is a weird one to fail on
<enebo[m]1> I think the full release value always will fail with deploy
<headius[m]> non-snapshot builds don't run deploy
<enebo[m]1> ok well I think I have never seen a green run with release version
<headius[m]> org.torquebox.mojo.rubygems.layout.SimpleStorage$StreamLocation is in unnamed module of loader org.codehaus.plexus.classworlds.realm.ClassRealm @151f1734)
<headius[m]> Failed to execute goal on project jruby-stdlib: Could not resolve dependencies for project org.jruby:jruby-stdlib:jar:9.2.16.0: Could not transfer artifact rubygems:ipaddr:gem:1.2.0 from/to mavengems (mavengem:https://rubygems.org): class javax.net.ssl.SSLException cannot be cast to class org.torquebox.mojo.rubygems.layout.SimpleStorage$StreamLocation (javax.net.ssl.SSLException is in module java.base of loader 'bootstrap';
<headius[m]> wat
<headius[m]> random module failure how
<headius[m]> omg this recruiter keeps calling me
<headius[m]> for a python job
<ahorek[m]> hey headius I've found a solution for Error: test_tcp_socket_get_keep_intvl(SocketTest): TypeError: size differ. expected as sizeof(int)=4 but 0
<headius[m]> oh this should be interesting
<ahorek[m]> it looks like IntBuffer doesn't hold the reference for the native memory, it's just being GCed
<headius[m]> that would explain it being random
<headius[m]> IntBuffer isn't native here though
<headius[m]> you mean whatever buffer JFFI makes to pass to native?
<headius[m]> the call from JRuby just passes a HeapIntBuffer which jffi/jnr-ffi then has to populate
<headius[m]> I was wondering about a GC effect but these are both heap and hard-referenced... so it would have to be something deeper getting lost
<ahorek[m]> https://github.com/jruby/jruby/pull/6593 it passes my stress test and travis also looks happy. I don't fully understand why IntBuffer doesn't work, IMO it should.
<headius[m]> Yeah that is pretty weird
<headius[m]> Seems like it would have to be something internal to jffi that is not handling the native buffer properly when copying values back out into the heap buffer
<headius[m]> So potentially a larger problem we may want to dig into
<ahorek[m]> indeed
<headius[m]> 👍 thanks for this though, at least we have a workaround
satyanash has quit [*.net *.split]
satyanash has joined #jruby
ur5us has joined #jruby
nirvdrum has quit [Ping timeout: 246 seconds]
ur5us_ has joined #jruby
ur5us has quit [Ping timeout: 240 seconds]
ur5us_ has quit [Ping timeout: 276 seconds]