Filed http://jira.codehaus.org/browse/JRUBY-6253 for the JIT class naming issue.
- Charlie On Wed, Dec 7, 2011 at 2:59 AM, Charles Oliver Nutter <head...@headius.com> wrote: > So...couldn't sleep. > > I made a modification to test/test_timeout.rb, where the net/http > timeout test was using www.google.de as a site to connect to...and > presumably timeout. That test has always been a little flaky, > especially on a fast connection like AWS. I modified it instead to use > Google's public DNS server, 8.8.8.8, which appears to ignore port 80. > With this change, jruby-test-all-release is green. > > I moved on to the JVM builds. > > My first change was removing some Hotspot-specific flags from the env > for jruby-test-matrix builds, which prevented the JRockit build from > starting up. I have not rerun it yet. > > I think IBM Java 5 might be a lost cause. I made some minor good > changes to test/testMap.rb, but then ran into encoding issues (missing > charsets) that would be very cumbersome to hack around. We might need > to drop this one unless someone wants to fight through it. > > IBM Java 6 is a better story. The primary issues: > > * Because we have been binding private methods, a test in testMap.rb > failed to work properly because instead of calling Map.put(Object, > Object) it called a private version put(Integer, Object). Subsequent > gets from Java were unable to see the values. I think it's probably a > good idea for us to stop binding private methods; you can go after > them with java_method, java_send, and the like. Agreed? > > * IBM is very restrictive of class names. Specifically, the # we now > have in some class names from the JIT prevents them from loading *at > all*. This will have to be addressed in some way, or JIT on IBM Java 6 > will never succeed. Other than that, I removed the # from reified > class names, which helped > > * It is also restrictive of method names. I modified class reification > to skip methods that were not entirely made up of Java identifier > characters, but only when on IBM. > > These fixes *almost* got IBM Java 6 to pass, but there are compiler > specs that fail probably because of the method name restrictions. > Again, this is a bigger problem. > > - Charlie > > On Wed, Dec 7, 2011 at 12:05 AM, Charles Oliver Nutter > <head...@headius.com> wrote: >> More... >> >> * The intermittent Fiber failure in the 1.9 RubySpec build were my >> fault. I did not take enough care to make sure rogue fibers could not >> wake up threads at random. I committed a new version that uses >> Exchanger and it appears to consistently pass all specs. I still need >> to investigate if it impacts performance. >> >> * There are two encoding specs that only fail on Java 5. It appears >> that Java 5's CharsetEncoder is happily allowing invalid EUC_JP input >> to be transcoded to ISO-8859-1 while Java 6 disallows it with an >> error. Since the CharsetEncoder is set to REPORT on errors, I must >> assume this is a bug. I'm introducing a new tag, "java1.5" that we can >> use to mask out this and other specs. It will be applied automatically >> when running on a particular version of Java. >> >> With these fixes, the interpreted 1.9 spec run is green, and >> "speci-ci" is finally green again after months of being red. Hooray! >> >> The next target was to get jruby-test-all-release green, since it >> failed last night. I modified test/test_timeout.rb's net/http timeout >> test to use a server that appears to ignore port 80, one of the Google >> open DNS servers, 8.8.8.8. That appeared to make the test quicker and >> more reliable on my machine, so I pushed it. I have not yet run a >> jruby-test-all-release CI run yet to test it. >> >> Tomorrow I will hopefully finally get to the cross-JVM builds. >> >> - Charlie >> >> On Tue, Dec 6, 2011 at 3:07 AM, Charles Oliver Nutter >> <head...@headius.com> wrote: >>> And yet more... >>> >>> * Modified the mspec runs to pass "-T -J-XX:MaxPermSize=512M" instead >>> of trying to set JAVA_OPTS all over. It seems that mspec must do some >>> env scrubbing, or something...so telling it to explicitly pass a -J >>> argument to the child JRuby process seems to have worked. The >>> interpreted, compiled (JIT), and precompiled (forced JIT) 1.8 spec >>> runs are all green again. >>> >>> * The 1.9 spec runs appear to fail with varying numbers of failures. >>> That's going to take more time to investigate. The fiber specs in >>> particular seem to pass sometimes and fail sometimes. >>> >>> * I've started making an attempt to get the Windows builds green >>> again. They seem to have decayed to the point of not actually even >>> starting up ant right, which could be due to my other changes. I added >>> an explicit path to ant's home and an ANT_HOME env var, and they're at >>> least attempting to build again. They are still failing, however; we >>> need to sit down with a Windows box and get everything green there. >>> >>> * I kicked off the cross-JVM matrix, and it appears that JRockit fails >>> because we're using nonstandard flags (CMS stuff, it appears) and J9 >>> fails (both versions) due to actual test failures. Will require a bit >>> more work. sun-java-5 and sun-java-6 are both green again. >>> >>> - Charlie >>> >>> On Tue, Dec 6, 2011 at 1:20 AM, Charles Oliver Nutter >>> <head...@headius.com> wrote: >>>> Additional tweaks... >>>> >>>> * There's a difference in File.flock behavior between Java 5 and later >>>> versions. Specifically, on later versions you have to have the file >>>> open in specific modes (read/write) to be able to do shared and >>>> exclusive locks. There's a guard in RubySpec for this behavior, which >>>> is exhibited on OpenJDK 6 and later and *should* be exhibited on any >>>> version of MRI on Solaris (which is the lowest-common-denominator >>>> excuse for the Java behavior). Because it only fails on Java 5 and the >>>> majority of users are on Java 6, I've added a Java 5-specific >>>> exclusion to spec/jruby.1.8.mspec and spec/jruby.1.9.mspec. That >>>> appears to be getting the spec runs green on Java 5...finally! >>>> >>>> * The spec runs were configured in Jenkins to have a maximum permgen >>>> of 128M, which caused my tweak from earlier to not take effect. I >>>> modified the Jenkins environment for spec-ci to allow permgen up to >>>> 512M. >>>> >>>> If I have time this evening (sick baby up late) I will attempt to get >>>> the cross-JVM build matrix green as well. We'll be greener than we've >>>> been in a long time, once that happens. >>>> >>>> - Charlie >>>> >>>> On Mon, Dec 5, 2011 at 11:30 PM, Charles Oliver Nutter >>>> <head...@headius.com> wrote: >>>>> Man, is this ever a painful job. >>>>> >>>>> I've spent most of the day trying to get CI builds green again, and >>>>> the server has been working against me. >>>>> >>>>> Most of the major builds were red...the spec builds, test-all, dist, >>>>> and I think jruby-base as well. In the process of fixing one build I >>>>> uncovered regressions in others, or uncovered bugs that caused more >>>>> builds to go red. Needless to say, I didn't expect to spend 15 hours >>>>> on this. >>>>> >>>>> I think I'm finally closing in on having everything green again, and >>>>> there were a few facts that came out of this I wanted to bring to >>>>> everyone's attention. >>>>> >>>>> * As I posted earlier, I added another test-all build for jruby-1_6. >>>>> It should help keep us honest. >>>>> >>>>> * Ant 1.7.0 is a pain in the ass. It appeared to ignore the JDK we >>>>> started it up with and always launched 'java' with whatever the >>>>> command on PATH was. BUT, it would run that JVM with the runtime you >>>>> started it up with...or something like that. In any case, those nasty >>>>> bizarre VerifyErrors came back. Ultimately I ended up going through >>>>> and explicitly making pretty much all builds use the ant182 install of >>>>> ant, *and* I modified Jenkins to puts that ant install at the front of >>>>> PATH. If I didn't do that, it seemed to keep picking up the >>>>> system-wide emerged "ant" and reverting to the old issues. >>>>> >>>>> * I had to bump up permgen on a couple of the precompiled tests again. >>>>> They're at 512M now. I also added permgen size to the spec runs, which >>>>> might cause them to break on JVMs that don't have a permgen flag. I'll >>>>> cross that bridge shortly. >>>>> >>>>> * I also forced almost all builds to run with Java 5. We've had some >>>>> bad Java 6 code sneak through again recently, and we need to keep the >>>>> builds honest across the board. All builds, unless otherwise >>>>> specified, will run with Java 5. >>>>> >>>>> I'm still in progress, but I'll write again in a while as more builds go >>>>> green. >>>>> >>>>> - Charlie --------------------------------------------------------------------- To unsubscribe from this list, please visit: http://xircles.codehaus.org/manage_email