Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [m2e-users] M2E consumes all available user ports and does not recover

I don't see a good way to help with this from m2e end, at least not in
immediate future.

It may be possible to reduce number of tcp/ip connections used by m2e by
using persistent http connections, but this will require server-side
support and I am not even sure if persistent connections are supported
by http transport library used in m2e.

It is also not possible to change m2e to immediately retry artifact
resolutions that failed with IOException as this will cause severe
performance problems when artifacts are actually missing.

--
Regards,
Igor

On 12-07-13 7:46 PM, Stepan Vavra wrote:
Well, I'll attach a pom.xml file which has lot of dependencies and thus
it can be used as an instance of a problem (if running on Win XP, with
fast enough internet access etc so that upper bound of port 5000 is
reached while all ports are in the TIME_WAIT state).

However, if I understand it right, the problem could be reduced to "what
m2e does when it cannot create a new socket and needs to download a jar
needed for the runtime".

If I'm right, the biggest problem with m2e is that it won't recover
without help from the outside (assuming you have several artifacts in
the repository that have the record: "Address already in use: no further
information")
1. If you run the Eclipse build, artifact resolution is not reattempted
and therefore you get undeterministic error based on what exactly is
missing in the local repo
2. If you update the project, artifact resolution is not reattempted either
3. If you check "Force update snapshots/releases" you'll run into the
same problem of consuming all the user ports

Although, I'm still not sure if this is an application level problem or
OS level problem, because "out of system resources" is typically
something you don't handle on the application level, right?..


How to reproduce the problem:
1. Clean local artifacts cache
2. Add settings.xml attached at the end of mail (includes dummy
repositories so that the sockets limit is reached faster)
3. Run Eclipse and import a project from the pom.xml attached at the end
of the mail
4. Now, you can monitor the number of ports in the TIME_WAIT state. If
the number reaches the maximum you'll start to get diverse errors
depending on what exactly was not downloaded.
5. Try to recover from this problem. My experience is that it's not
possible by using m2e only (without running build from the command line)



Attachements (pasted .. sorry for that):



SETTINGS.XML

<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
http://maven.apache.org/xsd/settings-1.0.0.xsd";
xmlns="http://maven.apache.org/SETTINGS/1.0.0";
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>

         <activeProfiles>
                 <activeProfile>foo</activeProfile>
         </activeProfiles>

         <profiles>
                 <profile>
                         <id>foo</id>

                         <repositories>
                                 <repository>
                                         <id>test1</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/1</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </repository>
<repository>
                                         <id>test2</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/2</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </repository>
<repository>
                                         <id>test3</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/3</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </repository>
<repository>
                                         <id>test4</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/4</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </repository>
                         </repositories>

                         <pluginRepositories>
                                 <pluginRepository>
                                         <id>test2</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/2</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </pluginRepository>
                                 <pluginRepository>
                                         <id>test1</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/1</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </pluginRepository>
                                 <pluginRepository>
                                         <id>test3</id>
                                         <name>AGF Development team
repository</name>

<url>http://google.com/artifactory/3</url>
                                         <snapshots>
                                                 <enabled>false</enabled>
                                         </snapshots>
                                 </pluginRepository>
                         </pluginRepositories>
                 </profile>
         </profiles>
</settings>





POM.XML

<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd";>

         <modelVersion>4.0.0</modelVersion>
         <groupId>foo</groupId>
         <version>1</version>
         <artifactId>barwar</artifactId>
         <packaging>war</packaging>

         <properties>
                 <axis.version>1.5.1</axis.version>
         </properties>

         <build>
                 <plugins>
                         <plugin>
                                 <artifactId>maven-war-plugin</artifactId>
                                 <version>2.2</version>
                                 <configuration>

<failOnMissingWebXml>false</failOnMissingWebXml>
                                 </configuration>
                         </plugin>
                 </plugins>
         </build>


         <dependencies>
                 <dependency>
                         <groupId>batik</groupId>
                         <artifactId>batik-1.5-fop</artifactId>
                         <version>0.20-5</version>
                 </dependency>

                 <dependency>
                         <groupId>batik</groupId>
                         <artifactId>batik-rasterizer</artifactId>
                         <version>1.6-1</version>
                 </dependency>

                 <dependency>
                         <groupId>javax.xml.bind</groupId>
                         <artifactId>jaxb-api</artifactId>
                         <version>2.1</version>
                 </dependency>
                 <dependency>
                         <groupId>xml-apis</groupId>
                         <artifactId>xml-apis</artifactId>
                         <version>1.3.02</version>
                 </dependency>
                 <dependency>
                         <groupId>org.mortbay.jetty</groupId>
                         <artifactId>jetty</artifactId>
                         <version>6.1.24</version>
                 </dependency>
                 <dependency>
                         <groupId>eclipse</groupId>
                         <artifactId>eclipse-ui</artifactId>
                         <version>2.1.0</version>
                 </dependency>
                 <dependency>
                         <groupId>eclipse</groupId>
                         <artifactId>eclipse-workbench</artifactId>
                         <version>2.1.0</version>
                 </dependency>
                 <dependency>
                         <groupId>eclipse</groupId>
                         <artifactId>eclipse-jface</artifactId>
                         <version>2.1.0</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-dependency-plugin</artifactId>
                         <version>2.4</version>
                 </dependency>
                 <dependency>
                         <groupId>maven</groupId>
                         <artifactId>maven-ear-plugin</artifactId>
                         <version>1.9</version>
                 </dependency>
                 <dependency>
                         <groupId>tomcat</groupId>
                         <artifactId>tomcat-ajp</artifactId>
                         <version>5.5.23</version>
                 </dependency>




                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-parent</artifactId>
                         <version>${axis.version}</version>
                         <type>pom</type>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-kernel</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-adb</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-ant-plugin</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-clustering</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-corba</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-fastinfoset</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-java2wsdl</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-jaxbri</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-jaxws</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-jibx</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-json</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-metadata</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-mtompolicy</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-saaj</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-spring</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-transport-http</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-transport-local</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>axis2-xmlbeans</artifactId>
                         <version>${axis.version}</version>
                 </dependency>
                 <dependency>
                         <groupId>org.apache.axis2</groupId>
                         <artifactId>soapmonitor</artifactId>
                         <version>${axis.version}</version>
                         <type>mar</type>
                 </dependency>

         </dependencies>
</project>



Regards,
Stepan


_______________________________________________
m2e-users mailing list
m2e-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/m2e-users




Back to the top