I added a comment on the code of the relevant PR, but the PR is in the Merged state, so I don't know if people receive e-mail notifications then.
> On Feb 17, 2017, at 12:16 AM, Wei ZHOU <ustcweiz...@gmail.com> wrote: > > Maybe we need ask Nuage why the lines are added. > > > 2017-02-17 7:54 GMT+01:00 Tutkowski, Mike <mike.tutkow...@netapp.com>: > >> Hopefully we can now find someone with experience in CloudStack's >> networking code to tell us if that fix is OK or if that was just a Band-Aid >> and we should do something more thorough to correct the issue. >> >>> On Feb 16, 2017, at 11:48 PM, Rajani Karuturi <raj...@apache.org> wrote: >>> >>> Thanks for digging it Mike. >>> >>> ~ Rajani >>> >>> http://cloudplatform.accelerite.com/ >>> >>> On February 17, 2017 at 12:18 AM, Tutkowski, Mike >>> (mike.tutkow...@netapp.com) wrote: >>> >>> Hi, >>> >>> I opened a blocker for 4.10 regarding this issue: >>> >>> https://issues.apache.org/jira/browse/CLOUDSTACK-9790 >>> >>> Thanks, >>> Mike >>> >>> On 2/16/17, 8:35 AM, "Tutkowski, Mike" >>> <mike.tutkow...@netapp.com> wrote: >>> >>> I believe the issue is here: >>> >>> https://github.com/apache/cloudstack/pull/1579 >>> >>> In ConfigurationManagerImpl.java, it appears the lines that led >>> to NPEs being thrown were added on lines 2924 – 2926: >>> >>> https://github.com/apache/cloudstack/pull/1579/files >>> >>> On 2/16/17, 2:42 AM, "Wido den Hollander" <w...@widodh.nl> >>> wrote: >>> >>>> Op 16 februari 2017 om 6:21 schreef Rajani Karuturi >>> <raj...@apache.org>: >>>> >>>> >>>> unfortunately, running one set of tests itself is very time >>>> consuming(multiplied by hypervisors, network modes etc. its >>>> impossible to run all) >>>> >>>> If I remember correctly, wido tested it with PR 1700 (IPV6 in >>>> basic networking) >>>> >>> >>> I highly doubt it's PR 1700 which is causing this. The PR I have >>> open to fix a issue ONLY applies if IPv6 has been set. >>> >>> PR 1700 only does something when you have set a IPv6 subnet in >>> the 'vlan' table: >>> https://github.com/apache/cloudstack/commit/ >> c0e7766713b2631a167c2ceea7d42b574a5cd1b9#diff- >> f90fdac6810fd89f89e827309a41d180R231 >>> >>> So I don't think it's caused by this since you NIC table will >>> not be filled with IPv6 addresses afterwards. >>> >>> Wido >>> >>>> Can you try a commit before and a commit after that PR? >>>> >>>> Thanks, >>>> >>>> ~ Rajani >>>> >>>> http://cloudplatform.accelerite.com/ >>>> >>>> On February 16, 2017 at 1:02 AM, Tutkowski, Mike >>>> (mike.tutkow...@netapp.com) wrote: >>>> >>>> Thanks for noting that PR, Rene. I tried building a Basic Zone >>>> making use of code from that PR, but – unfortunately – I still >>>> get an exception (below). >>>> >>>> On a related note, does this mean we don’t run any integration >>>> tests that build a Basic Zone before we OK a PR to be checked >>> in? >>>> >>>> ERROR [c.c.a.ApiServer] (qtp555984412-267:ctx-a904cbd0 >>>> ctx-062a000a) (logid:30f5a3ec) unhandled exception executing >>> api >>>> command: [Ljava.lang.String;@4732a98c >>>> java.lang.NullPointerException >>>> at >>>> com.cloud.utils.net.NetUtils.getCidrNetmask(NetUtils.java:956) >>>> at >>>> >>> com.cloud.configuration.ConfigurationManagerImpl.validateIpRange( >> ConfigurationManagerImpl.java:2924) >>>> at >>>> >>> com.cloud.configuration.ConfigurationManagerImpl. >> createVlanAndPublicIpRange(ConfigurationManagerImpl.java:2822) >>>> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >>>> at >>>> >>> sun.reflect.NativeMethodAccessorImpl.invoke( >> NativeMethodAccessorImpl.java:62) >>>> at >>>> >>> sun.reflect.DelegatingMethodAccessorImpl.invoke( >> DelegatingMethodAccessorImpl.java:43) >>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>> at >>>> >>> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection >> (AopUtils.java:333) >>>> at >>>> >>> org.springframework.aop.framework.ReflectiveMethodInvocation. >> invokeJoinpoint(ReflectiveMethodInvocation.java:190) >>>> at >>>> >>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( >> ReflectiveMethodInvocation.java:157) >>>> at >>>> >>> org.apache.cloudstack.network.contrail.management. >> EventUtils$EventInterceptor.invoke(EventUtils.java:107) >>>> at >>>> >>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( >> ReflectiveMethodInvocation.java:168) >>>> at >>>> >>> com.cloud.event.ActionEventInterceptor.invoke( >> ActionEventInterceptor.java:51) >>>> at >>>> >>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( >> ReflectiveMethodInvocation.java:168) >>>> at >>>> >>> org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke( >> ExposeInvocationInterceptor.java:92) >>>> at >>>> >>> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed( >> ReflectiveMethodInvocation.java:179) >>>> at >>>> >>> org.springframework.aop.framework.JdkDynamicAopProxy. >> invoke(JdkDynamicAopProxy.java:213) >>>> at com.sun.proxy.$Proxy126.createVlanAndPublicIpRange(Unknown >>>> Source) >>>> at >>>> >>> org.apache.cloudstack.api.command.admin.vlan. >> CreateVlanIpRangeCmd.execute(CreateVlanIpRangeCmd.java:219) >>>> at >>> com.cloud.api.ApiDispatcher.dispatch(ApiDispatcher.java:150) >>>> at com.cloud.api.ApiServer.queueCommand(ApiServer.java:709) >>>> at com.cloud.api.ApiServer.handleRequest(ApiServer.java:533) >>>> at >>>> >>> com.cloud.api.ApiServlet.processRequestInContext(ApiServlet.java:299) >>>> at com.cloud.api.ApiServlet$1.run(ApiServlet.java:129) >>>> at >>>> >>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call( >> DefaultManagedContext.java:56) >>>> at >>>> >>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext. >> callWithContext(DefaultManagedContext.java:103) >>>> at >>>> >>> org.apache.cloudstack.managed.context.impl.DefaultManagedContext. >> runWithContext(DefaultManagedContext.java:53) >>>> at >>> com.cloud.api.ApiServlet.processRequest(ApiServlet.java:126) >>>> at com.cloud.api.ApiServlet.doGet(ApiServlet.java:88) >>>> at >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:687) >>>> at >>> javax.servlet.http.HttpServlet.service(HttpServlet.java:790) >>>> at >>>> >>> org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) >>>> at >>>> >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain. >> doFilter(ServletHandler.java:1669) >>>> at >>>> >>> org.eclipse.jetty.websocket.server.WebSocketUpgradeFilter.doFilter( >> WebSocketUpgradeFilter.java:189) >>>> at >>>> >>> org.eclipse.jetty.servlet.ServletHandler$CachedChain. >> doFilter(ServletHandler.java:1652) >>>> at >>>> >>> org.eclipse.jetty.servlet.ServletHandler.doHandle( >> ServletHandler.java:585) >>>> at >>>> >>> org.eclipse.jetty.server.handler.ScopedHandler.handle( >> ScopedHandler.java:143) >>>> at >>>> >>> org.eclipse.jetty.security.SecurityHandler.handle( >> SecurityHandler.java:577) >>>> at >>>> >>> org.eclipse.jetty.server.session.SessionHandler. >> doHandle(SessionHandler.java:223) >>>> at >>>> >>> org.eclipse.jetty.server.handler.ContextHandler. >> doHandle(ContextHandler.java:1127) >>>> at >>>> >>> org.eclipse.jetty.servlet.ServletHandler.doScope( >> ServletHandler.java:515) >>>> at >>>> >>> org.eclipse.jetty.server.session.SessionHandler. >> doScope(SessionHandler.java:185) >>>> at >>>> >>> org.eclipse.jetty.server.handler.ContextHandler. >> doScope(ContextHandler.java:1061) >>>> at >>>> >>> org.eclipse.jetty.server.handler.ScopedHandler.handle( >> ScopedHandler.java:141) >>>> at >>>> >>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle( >> ContextHandlerCollection.java:215) >>>> at >>>> >>> org.eclipse.jetty.server.handler.HandlerCollection. >> handle(HandlerCollection.java:110) >>>> at >>>> >>> org.eclipse.jetty.server.handler.HandlerWrapper.handle( >> HandlerWrapper.java:97) >>>> at org.eclipse.jetty.server.Server.handle(Server.java:499) >>>> at >>>> >>> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) >>>> at >>>> >>> org.eclipse.jetty.server.HttpConnection.onFillable( >> HttpConnection.java:258) >>>> at >>>> >>> org.eclipse.jetty.io.AbstractConnection$2.run( >> AbstractConnection.java:544) >>>> at >>>> >>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob( >> QueuedThreadPool.java:635) >>>> at >>>> >>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run( >> QueuedThreadPool.java:555) >>>> at java.lang.Thread.run(Thread.java:745) >>>> >>>> On 2/15/17, 12:52 AM, "Tutkowski, Mike" >>>> <mike.tutkow...@netapp.com> wrote: >>>> >>>> Thanks for pointing this out. >>>> >>>> I can incorporate those changes in the morning and see if it >>>> does the trick. >>>> >>>>> On Feb 15, 2017, at 12:50 AM, Rene Moser >>> <m...@renemoser.net> >>>> wrote: >>>>> >>>>> Probably related to >>>> https://github.com/apache/cloudstack/pull/1927 >>>>> >>>>> >>>>> >>>>>> On 02/14/2017 10:44 PM, Tutkowski, Mike wrote: >>>>>> Hi, >>>>>> >>>>>> I’m getting a NullPointerException when trying to create a >>>> zone using master. >>>>>> >>>>>> Below is the relevant code in ConfigurationManagerImpl. >>>>>> >>>>>> In the else block, network.getCidr() returns null and >>>> NetUtil.getCidrNetmask then throws a NullPointerException. >>>>>> >>>>>> I noticed that network.getGateway() also returns null >>> (which >>>> seems odd). >>>>>> >>>>>> Thoughts on this? >>>>>> >>>>>> Thanks! >>>>>> Mike >>>>>> >>>>>> public Pair<Boolean, Pair<String, String>> >>>> validateIpRange(final String startIP, final String endIP, >>> final >>>> String newVlanGateway, final String newVlanNetmask, final >>>> List<VlanVO> vlans, final boolean ipv4, >>>>>> final boolean ipv6, String ip6Gateway, String ip6Cidr, >>> final >>>> String startIPv6, final String endIPv6, final Network network) >>> { >>>>>> String vlanGateway = null; >>>>>> String vlanNetmask = null; >>>>>> boolean sameSubnet = false; >>>>>> if (CollectionUtils.isNotEmpty(vlans)) { >>>>>> for (final VlanVO vlan : vlans) { >>>>>> vlanGateway = vlan.getVlanGateway(); >>>>>> vlanNetmask = vlan.getVlanNetmask(); >>>>>> sameSubnet = hasSameSubnet(ipv4, vlanGateway, vlanNetmask, >>>> newVlanGateway, newVlanNetmask, startIP, endIP, >>>>>> ipv6, ip6Gateway, ip6Cidr, startIPv6, endIPv6, network); >>>>>> if (sameSubnet) break; >>>>>> } >>>>>> } else { >>>>>> vlanGateway = network.getGateway(); >>>>>> vlanNetmask = NetUtils.getCidrNetmask(network.getCidr()); >>