On Tue, Feb 6, 2018 at 5:20 AM, Robert Varga <n...@hq.sk> wrote:

> On 06/02/18 06:53, Thanh Ha wrote:
> > The old-style mdsal-merge job deployed and I kicked off a build:
> >
> > https://jenkins.opendaylight.org/releng/view/Merge-Jobs/
> job/mdsal-merge-oxygen/1/console
> >
> > It takes about 50 minutes for mdsal to build so we'll know in ~50
> > minutes if that fixed the issue.
>
> Hello Thanh,
>
> the one thing I found is a difference in file upload strategy in the two
> jobs:
>
> old:
>
> > Deploying the main artifact iana-afn-safi-2013.07.04.12.0-SNAPSHOT.jar
> > Downloading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml
> > Downloaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml (2 KB at 20.8 KB/sec)
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112.jar
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112.jar (23 KB at 2.4 KB/sec)
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112.pom
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112.pom (2 KB at 7.5 KB/sec)
> > Downloading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/maven-metadata.xml
> > Downloaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/maven-metadata.xml (481 B at 31.3 KB/sec)
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml (2 KB at 4.3 KB/sec)
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/maven-metadata.xml
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/maven-metadata.xml (481 B at 0.6 KB/sec)
> > Deploying the main artifact iana-afn-safi-2013.07.04.12.0-
> SNAPSHOT-javadoc.jar
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112-javadoc.jar
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112-javadoc.jar (50 KB at 58.1 KB/sec)
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml (2 KB at 2.7 KB/sec)
> > Deploying the main artifact iana-afn-safi-2013.07.04.12.0-
> SNAPSHOT-sources.jar
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112-sources.jar
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/iana-afn-safi-2013.
> 07.04.12.0-20180206.071107-112-sources.jar (13 KB at 13.0 KB/sec)
> > Uploading: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml
> > Uploaded: https://nexus.opendaylight.org/content/repositories/
> opendaylight.snapshot/org/opendaylight/mdsal/model/iana-
> afn-safi/2013.07.04.12.0-SNAPSHOT/maven-metadata.xml (2 KB at 1.9 KB/sec)
>
> new:
>
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/maven-metadata.xml
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111.jar.sha1
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111.jar
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111.jar.md5
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111.pom
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111.pom.sha1
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111.pom.md5
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/maven-metadata.xml.sha1
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/maven-metadata.xml.md5
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111-javadoc.jar
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-
> 111-javadoc.jar.sha1
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111-javadoc.jar.md5
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111-sources.jar
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-
> 111-sources.jar.sha1
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/2013.07.04.12.0-
> SNAPSHOT/iana-afn-safi-2013.07.04.12.0-20180206.034156-111-sources.jar.md5
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/maven-metadata.xml
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/maven-metadata.
> xml.sha1
> > Uploading org/opendaylight/mdsal/model/iana-afn-safi/maven-metadata.
> xml.md5
>
> It seems we are doing things in different order, old:
> - download artifact-$VERSION metadata
> - upload artifact-$VERSION content (jar, pom)
> - download artifact metadata
> - upload artifact-$VERSION metadata
> - upload artifact metadata
>
> Whereas new does not seem to do any sort of ordering -- and uploads also
> checksums, etc.
>
> Now I don't know if nexus is doing anything the the metadata it has or
> how it reacts to parallel deployment of related artifacts. I would
> suggest creating a smarter strategy:
>
> - group files by their artifact name (i.e. directory)
>
> for each artifact file group:
> - upload content (jars, pom, javadoc, sources, etc. etc.) for an
> artifact in a serial manner first
> - upload versioned metadata
> - upload metadata
>
> Never use parallelism inside a group, use parallelism across groups --
> i.e. deploy multiple artifacts concurrently while retaining file upload
> ordering matching how the old job does things within each artifact.
>
> Regards,
> Robert
>

Hi Robert,

So how the new maven merge job works is as follows:

1. Download maven-metadata.xml using wget recursive and copies it to
$WORKSPACE/m2repo and $WORKSPACE/m2repo-backup in the same structure as a
maven repo.
2. Perform mvn clean
deploy -DaltDeploymentRepository=staging::default::file:$WORKSPACE/m2repo
in this case Maven considers this directory a m2repo and updates
maven-metadata.xml as if the deployment repo was on a webserver
3. Diff the 2 repos m2repo and m2repo-backup and delete all files that were
not modified
4. Use cURL + gnu-parallel to upload the artifacts to Nexus

The issue is not with step 4 (Although uploading metadata last is a good
idea) but with step 2 (and I realize now why the validation tool in 3
didn't catch some errors) when `mvn clean deploy` is running, for some mvn
occasionally produces artifacts and maven-metadata.xml that have the
different timestamps. This is is a known issue for sure with mvn 3.5.0 and
fixed in 3.5.2 I'm not sure if 3.3.9 had the issue or not.

Last night Luis found a job that consistently always generated the wrong
metadata, when I switched that job to mvn35 it passed, would need more data
to confirm if 3.5.2 really solves the issue or we got lucky but it seems
like perhaps Maven 3.3.9 has issues with deploying to a local maven repo.

As for why the validation tool failed to catch the issue was, we were only
checking for consistency inside of maven-metadata.xml so did not catch when
the maven-metadata.xml was consistent inside the file but still had
different filenames.

This unfortunately puts us back on the old merge job which causes Jenkins
instability but considering our crunch time now, a little instability with
Jenkins is better than having bad metadata.

Thanh
_______________________________________________
controller-dev mailing list
controller-dev@lists.opendaylight.org
https://lists.opendaylight.org/mailman/listinfo/controller-dev

Reply via email to