This Bugzilla instance is deprecated, and most Eclipse projects now use GitHub or Eclipse GitLab. Please see the deprecation plan for details.
Bug 412110 - I20130702-0800 BUILD FAILED with NPE during POM Updater
Summary: I20130702-0800 BUILD FAILED with NPE during POM Updater
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Releng (show other bugs)
Version: 4.3   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: 4.3.1   Edit
Assignee: David Williams CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-07-02 10:12 EDT by David Williams CLA
Modified: 2013-08-14 03:13 EDT (History)
4 users (show)

See Also:


Attachments
log where NPE is thrown during "pom updater" (27.35 MB, text/plain)
2013-07-02 10:12 EDT, David Williams CLA
no flags Details
diff -r of localMavenRepo which worked (the 'bak' one) and one that didn't work (238.93 KB, text/plain)
2013-07-02 10:16 EDT, David Williams CLA
no flags Details
Ouput using your "find/grep" command (23.55 KB, text/plain)
2013-07-02 12:03 EDT, David Williams CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description David Williams CLA 2013-07-02 10:12:23 EDT
Created attachment 232992 [details]
log where NPE is thrown during "pom updater"

I dont' see any obvious reasons why this build would fail, but will attach log.
Comment 1 David Williams CLA 2013-07-02 10:16:12 EDT
Created attachment 232993 [details]
diff -r of localMavenRepo which worked (the 'bak' one) and one that didn't work

Just for completeness I'm attaching a "diff" in the "local maven repo" that is created as we start of our build ... usually containing "pre-reqs" to do the build with. 

We've learned to get "reliablying accruate" builds, we should "clean" that repo before any substantial build, but instead of just deleting it, I move it to "localMavenRepo.bak" so if things seem unusual, we can do a diff to see what's changed.
Comment 2 David Williams CLA 2013-07-02 10:23:14 EDT
Jan, thanks for your tip as to reason why build might have failed (missing group IDs?) ... and the possibility of using 0.19.0-SNAPSHOT to work around it. 

But, we have had several successful builds with 0.18.0 with things as they are. So 1) I'm wondering what else might have changed? and 2) I'd like to find the pom's without a proper groupId rather then simply move to 0.19.0-SNAPSHOT to work around them missing. 

Any "tips" you can give to find those? (Other than some brute force search?) 

Does this refer to missing groupId on our artifacts/parents? Or in specifying our pre-reqs?
Comment 3 David Williams CLA 2013-07-02 10:44:52 EDT
For the record, on mailing list, Jan said this looked related to 

bug 409912

fixed in tycho 0.19.0-SNAPSHOT.
Comment 4 Thomas Watson CLA 2013-07-02 10:53:27 EDT
Not sure if this is causing the issue, but it looks like this commit did not update the pom.xml version for the artifact:

http://git.eclipse.org/c/platform/eclipse.platform.team.git/commit/?id=920d2b2d15b09018408a7f604f62095f679a91fa
Comment 5 Jan Sievers CLA 2013-07-02 10:54:06 EDT
(In reply to comment #2)
> Jan, thanks for your tip as to reason why build might have failed (missing
> group IDs?) ... and the possibility of using 0.19.0-SNAPSHOT to work around
> it. 
> 
> But, we have had several successful builds with 0.18.0 with things as they
> are. So 1) I'm wondering what else might have changed? and 2) I'd like to
> find the pom's without a proper groupId rather then simply move to
> 0.19.0-SNAPSHOT to work around them missing. 
> 
> Any "tips" you can give to find those? (Other than some brute force search?) 
> 
> Does this refer to missing groupId on our artifacts/parents? Or in
> specifying our pre-reqs?

(In reply to comment #2)
> Jan, thanks for your tip as to reason why build might have failed (missing
> group IDs?) ... and the possibility of using 0.19.0-SNAPSHOT to work around
> it. 
> 
> But, we have had several successful builds with 0.18.0 with things as they
> are. So 1) I'm wondering what else might have changed? and 2) I'd like to
> find the pom's without a proper groupId rather then simply move to
> 0.19.0-SNAPSHOT to work around them missing. 
> 
> Any "tips" you can give to find those? (Other than some brute force search?) 
> 
> Does this refer to missing groupId on our artifacts/parents? Or in
> specifying our pre-reqs?

see the sample project attached to bug 409912

something like this will cause the NPE

	<build>
		<plugins>
			<plugin>
                                <!-- missing groupId element here -->
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.3</version>
			</plugin>
		</plugins>
	</build>


to find the poms, off the top of my head I'd use find and grep.
AFAIK the plugins with implicit groupId org.apache.maven.plugins all have artifactId maven-*-plugin.

The search

find . -name pom.xml -exec grep -HE -B1 "<artifactId>maven-.*-plugin" {} \;

should give you a list of candidates.
If you find one that has no <groupId> preceding line, that could be the one. Note that artifactId and groupId have no strictly defined XML element order in pom.xml though so you may hit false positives with the grep above.

Another way would be to list all commits since the last time the build succeeded.
Something like this in your aggregator git repo

git submodule foreach git log -u --since=2013/06/25
Comment 6 Jan Sievers CLA 2013-07-02 10:56:08 EDT
(In reply to comment #4)
> Not sure if this is causing the issue, but it looks like this commit did not
> update the pom.xml version for the artifact:
> 
> http://git.eclipse.org/c/platform/eclipse.platform.team.git/commit/
> ?id=920d2b2d15b09018408a7f604f62095f679a91fa

probably unrelated as far as I can see
Comment 7 Jan Sievers CLA 2013-07-02 11:02:21 EDT
another simple workaround option is to go back to tycho 0.17.0 (or forward to 0.19.0-SNAPSHOT) just for the update-poms call.

in your script where you call the update-pom goal, you can make the tycho version to be used explicit (implicit means latest released i.e. 0.18.0). See docs [1]
 
Sth. like this

mvn org.eclipse.tycho:tycho-versions-plugin:0.17.0:update-pom


[1] http://eclipse.org/tycho/sitedocs/tycho-release/tycho-versions-plugin/update-pom-mojo.html
Comment 8 David Williams CLA 2013-07-02 12:03:53 EDT
Created attachment 232998 [details]
Ouput using your "find/grep" command

according to running your find/grep command, we may be missing LOTS of group IDs, especially for "antrun-plugin", but some others. (As you say, some of these may be false positives, but I did check a few, and many appear "valid"). 

I did a "diff" from last I-build, and could not see where any "group-ids" were removed. (So, still wondering what in "infrastructure" changed?) 

We did do some mass updates for "parent pom" version, so ... wondering if might be related to that and not "group id" per se? 

I've been running LOTS of test builds (both "4.3 maintenance" and a few "4.4 I-builds") on my local test machine and no problems until today. 

I'm trying local M-build now to confirm it still runs. (local I-build does fail, in same way, as on eclipse.org ... this morning). 

Before changing to try 0.19.0-SNAPSHOT may try things like "recloning" all repos, just to make sure, not some oddities going on.
Comment 9 Jan Sievers CLA 2013-07-02 12:08:42 EDT
(In reply to comment #8)
> Created attachment 232998 [details]
> Ouput using your "find/grep" command
> 
> according to running your find/grep command, we may be missing LOTS of group
> IDs, especially for "antrun-plugin", but some others. (As you say, some of
> these may be false positives, but I did check a few, and many appear
> "valid"). 
> 
> I did a "diff" from last I-build, and could not see where any "group-ids"
> were removed. (So, still wondering what in "infrastructure" changed?) 
> 
> We did do some mass updates for "parent pom" version, so ... wondering if
> might be related to that and not "group id" per se? 
> 
> I've been running LOTS of test builds (both "4.3 maintenance" and a few "4.4
> I-builds") on my local test machine and no problems until today. 
> 
> I'm trying local M-build now to confirm it still runs. (local I-build does
> fail, in same way, as on eclipse.org ... this morning). 
> 
> Before changing to try 0.19.0-SNAPSHOT may try things like "recloning" all
> repos, just to make sure, not some oddities going on.

going back to 0.17.0 only for the update-pom goal is your easiest option I think
Comment 10 David Williams CLA 2013-07-02 12:19:30 EDT
(In reply to comment #9)
> (In reply to comment #8)

> 
> going back to 0.17.0 only for the update-pom goal is your easiest option I
> think

Ok, I'll try that next. But, for the record, my local M-build is working just fine.
Comment 11 Markus Keller CLA 2013-07-02 12:47:46 EDT
David, you may also want to try reverting the commit mentioned in comment 4 (i.e. set eclipse.platform.team back to parent commit 0bde93181378cc4a8f0fd38811403dfdc54e02db).

Since most Eclipse developers now use the pom.xml validation in the releng.tools plug-in, we probably haven't tested the pom updater at all for a while, since we never had anything to update. So I wouldn't rule out that commit as the one that reveals the NPE in tycho now.
Comment 12 David Williams CLA 2013-07-02 12:55:36 EDT
(In reply to comment #10)
> (In reply to comment #9)
> > (In reply to comment #8)
> 
> > 
> > going back to 0.17.0 only for the update-pom goal is your easiest option I
> > think
> 
> Ok, I'll try that next. But, for the record, my local M-build is working
> just fine.

Well, Jan was right, as usual. :) 

Using 0.17.0 got "passed" the NPE and indeed did find a pom needed updating ... the one in "team". So, I conclude the "rule" is that as long as nothing needs updating 0.18.0 works fine (like maintenance, and my recent test I-builds) but if a POM does need updating, then it will hit the NPE.). 

I'd still like to find out more about what/how/why we have so many group IDs unspecified and how to fix them (easily) ... are there "warnings" among our 50,000 warnings? 

But, thanks greatly, Jan. 


= = = = 

diff --git a/bundles/org.eclipse.compare/pom.xml b/bundles/org.eclipse.compare/pom.xml
index f010fa6..0f6265b 100644
--- a/bundles/org.eclipse.compare/pom.xml
+++ b/bundles/org.eclipse.compare/pom.xml
@@ -19,6 +19,6 @@
   </parent>
   <groupId>org.eclipse.compare</groupId>
   <artifactId>org.eclipse.compare</artifactId>
-  <version>3.5.400-SNAPSHOT</version>
+  <version>3.5.500-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
 </project>
Comment 13 David Williams CLA 2013-07-02 14:14:03 EDT
Since build is cooking, I'm closing as fixed. I have updated both master and R4_3_maintenance branch to use :0.17.0: explicitly (only for pom-updater). 

As follow up, I've opened bug 412131 to find and fix missing group Ids and 

bug 412135 as a reminder to move up to fixed version of pom-updater, whether that's 0.18.1 or 0.19.0.
Comment 14 Jan Sievers CLA 2013-07-03 03:45:38 EDT
(In reply to comment #2)
> But, we have had several successful builds with 0.18.0 with things as they
> are. So 1) I'm wondering what else might have changed? 

For the record, here is what (I think) happened:

I guess that in your update-pom script, you did not specify an explicit version of tycho to be used for the update-pom goal. That means it's using "latest released" which was 0.17.0 for most of the Kepler development timeframe.

Then we released tycho 0.18.0 with regression bug 409912.

AFAIK the "latest released" version resolution for standalone goal execution relies on some kind of index on nexus which is updated asynchronously.
This is how it's possible that you did not see the bug for some time even after tycho 0.18.0 was released.

Regarding the missing groupId for build plugins, this is valid and I checked that  maven does not warn about it. So you might have lots of places where this is the case and as it's tolerated normally.
Comment 15 David Williams CLA 2013-07-03 11:22:34 EDT
(In reply to comment #14)
> (In reply to comment #2)

> 
> Regarding the missing groupId for build plugins, this is valid and I checked
> that  maven does not warn about it. So you might have lots of places where
> this is the case and as it's tolerated normally.

Just to make sure I'm interpreting this comment correctly ... are you saying it is valid (and normal) to not name the groupId for every plugin? Or just that its ok (and normal) not to since it is normally tolerated (and inferred correctly)? 

I'm just wondering if bug 412131 is a valid enhancement, or something that we should skip?
Comment 16 Jan Sievers CLA 2013-07-03 11:50:25 EDT
(In reply to comment #15)
> (In reply to comment #14)
> > (In reply to comment #2)
> 
> > 
> > Regarding the missing groupId for build plugins, this is valid and I checked
> > that  maven does not warn about it. So you might have lots of places where
> > this is the case and as it's tolerated normally.
> 
> Just to make sure I'm interpreting this comment correctly ... are you saying
> it is valid (and normal) to not name the groupId for every plugin? Or just
> that its ok (and normal) not to since it is normally tolerated (and inferred
> correctly)? 
> 
> I'm just wondering if bug 412131 is a valid enhancement, or something that
> we should skip?

it's kind of a sloppy shorthand notation (probably for historical reasons in maven) that only works for plugins in groupId org.apache.maven.plugins.

As a matter of fact the default groupId value org.apache.maven.plugins became API and people rely on it, so I would skip bug 412131