On Wed, 21 May 2025 12:58:37 GMT, Jaikiran Pai <j...@openjdk.org> wrote:
>> Hello Lance/Henry, >> >>> Well, now would be a good time to consider say a value of 2 for duplicates, >>> 3 for invalid names, etc... >> >> I think from a specification point of view, for this current PR, we should >> only specify that the `--validate` operation returns a non-zero exit code >> when the `--validate` operation identifies any issues in the JAR file or the >> validation operation itself runs into some error. For the latter, where the >> operation itself runs into an error, we could explicitly state that the exit >> code will be `-1` (for example). For the case where the validate operation >> has identified issues in the JAR file, I think we should just return a >> single consistent non-zero code, irrespective of which validations failed. >> >> Using a separate exit code for different validation failures I think would >> make it hard to maintain as the number of validations increase in future and >> when more than one validation failure happens in the JAR file. What we could >> however consider is specifying the exact error message (or error string, >> imagine `ERR-12345` for duplicate entry names) that get reported for these >> individual validation failures. > >> For the inconsistent order in the LOC and CEN, we can treat it as invalid, I >> chose not to because that's not a violation, but if we do extend that as >> specification for JAR file format, then we can change that to invalid and >> non-zero exit code. > > For the `jar --validate` operation, it would be useful to not just warn (and > thus exit with a non-zero exit code) for issues that violate the ZIP or JAR > specification, but also for inconsistencies and uncommon JAR contents that > might cause some unexpected behaviour within the platform runtime. This helps > with identifying and analyzing such unexpected issues in the JAR (but not > strictly violations of any specification) even before that JAR gets used in > the platform runtime. This is no different for the duplicate entries in the > JAR file, for which we issue warnings even if the ZIP specification > explicitly allows it (and the JAR specification doesn't make a mention of it). > > Based on some experiments we have run, it's not very common for a JAR file to > have a different order in CEN as compared to LOC, so I think any JAR file > that has a different order between these structures should result in a > warning (and thus a non-zero exit code) from the validate operation. > Point taken. For documentation wise, I don't think it's necessary to specify > at this point. For the inconsistent order in the LOC and CEN, we can treat it > as invalid, I chose not to because that's not a violation, but if we do > extend that as specification for JAR file format, then we can change that to > invalid and non-zero exit code. I am OK to currently specify as non-zero, it is a discussion that can be continued as to what if anything more to do (as Jai mentions) Any warnings should result in a non-zero for a return code. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/24430#discussion_r2100377057