mistriggered "error: warnings found and -Werror specified" for java warnings

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Thu Apr 23 16:59:11 UTC 2020

On 2020-04-23 17:17, Igor Ignatyev wrote:
> Hi Matthias,
>> jtharness 6.0-b10 and jtreg 5.0-b1.
> jtreg 5.0-b1 "officially" depends on jt6.0-b08, and the bundle which 
> we use internally has jt6.0-b08 within it, and AFAICT jt6.0-b08 hasn't 
> deprecated c.s.j.H.Observer::finishedTesting yet. so as a temp. 
> solution to allow configurations like yours, we need to suppress 
> deprecation warning in failure handler, that's if we decide that such 
> configurations are "supported", which isn't that obvious as you might 
> encounter some deviations in jtreg behavior   b/c another version of 
> its dependency is used, so I'd encourage you to use the exact same 
> version as used by jtreg build script[1].
 From my point of view, I think we should have a very narrow range of 
supported jtreg versions. It's not like when building with the system 
zlib; this is a framework solely used for testing the JDK, and I think 
we can (and should) be quite strict as to which versions the current 
code base is designed to work with.

Things get a little bit muddier if the version of jtreg matches, but not 
an upstream dependency for jtreg. I still tend to lean towards Igor's 
suggestion here, that a properly setup jtreg environment is the one 
officially built by jtreg.


> a proper solution would include switching jtreg to newer version of 
> jt-harness (which implies adjustment of jtreg and subsequently 
> testing), promotion/tagging of newer jtreg build, switching to newer 
> jtreg in jdk and updating in failurehandler.
> Thanks,
> -- Igor
> [1] 
> http://hg.openjdk.java.net/code-tools/jtreg/file/fc37a1d7f0ea/make/build-all.sh#l129
>> On Apr 23, 2020, at 7:48 AM, Matthias Klose <doko at ubuntu.com 
>> <mailto:doko at ubuntu.com>> wrote:
>> On 4/23/20 4:05 PM, Magnus Ihse Bursie wrote:
>>>> 23 apr. 2020 kl. 15:50 skrev Igor Ignatyev 
>>>> <igor.ignatyev at oracle.com <mailto:igor.ignatyev at oracle.com>>:
>>>>> On Apr 23, 2020, at 6:12 AM, Erik Joelsson 
>>>>> <erik.joelsson at oracle.com <mailto:erik.joelsson at oracle.com>> wrote:
>>>>> Hello Matthias,
>>>>>> On 2020-04-23 05:51, Matthias Klose wrote:
>>>>>> jdk-15+20 fails to build with
>>>>>> * For target 
>>>>>> support_test_failure_handler_classes__the.BUILD_FAILURE_HANDLER_batch:
>>>>>> /packages/openjdk/15/openjdk-15-15~20/test/failure_handler/src/share/classes/jdk/test/failurehandler/jtreg/GatherDiagnosticInfoObserver.java:136:
>>>>>> warning: [deprecation] finishedTesting() in Observer has been 
>>>>>> deprecated
>>>>>>   public void finishedTesting() {
>>>>>>               ^
>>>>>> error: warnings found and -Werror specified
>>>>>> 1 error
>>>>>> 1 warning
>>>>> That's strange. I assume this tool is built with the boot JDK, so 
>>>>> that makes me wonder what boot JDK you are using as we have not 
>>>>> seen this warning/error?
>> that's with 14.0.1+7.
>>>> I guess version of jtreg/jt-harness is more relevant here as 
>>>> deprecated finishedTesting is from com.sun.javatest.Harness.Observer.
>>> Aha, that’s probably the explanation. I recently removed deprecation 
>>> as a disabled warning for the failure handler. If it depends on 
>>> jtreg, and it has changed deprecation status, that might trigger a 
>>> compilation warning.
>>> I’m on mobile now and can’t check how this should be resolved.
>>> If a newer version of jtreg introduced the depreciation, we should 
>>> fix our sources. If this is something only present in older sources 
>>> (?) we might need to raise the minimum jtreg version.
>> jtharness 6.0-b10 and jtreg 5.0-b1.
>>> /Magnus
>>>> --Igor
>>>>>> Apparently --disable-warnings-as-errors only has an effect on 
>>>>>> C/C++ files,
>>>>>> however the build diagnostics trigger on java warnings as well, 
>>>>>> and apparently
>>>>>> -Werror is hard-coded in various places for java options. Should the
>>>>>> documentation for this configure option be clarified, or should 
>>>>>> it trigger for
>>>>>> java warnings as well?
>>>>> Correct. The reasoning is that OpenJDK is built on a wide variety 
>>>>> of environments with different compiler versions, so keeping the 
>>>>> build warning free on all of them isn't feasible. This option 
>>>>> makes it possible to build with all those different compiler 
>>>>> versions while still maintaining a warning free source for a core 
>>>>> set of compiler versions. In contrast, the Java code should only 
>>>>> be compiled with a very small set of javac versions, which should 
>>>>> be easily controlled. The majority of the code is even compiled 
>>>>> with the Javac we are building. We have contemplated a similar 
>>>>> option for Java code, but concluded that it doesn't serve any 
>>>>> purpose. The Java source should just always be warning free.
>>>>> /Erik

More information about the jdk-dev mailing list