Hugo noted that the log of the roll back might actually occur after
the null pointer. That still leaves the fact that the pointer is first
a valid returned object and then causes a npe after that. Any hints as
to how this transaction mech works?

On Thu, May 8, 2014 at 10:51 AM, Daan Hoogland <daan.hoogl...@gmail.com> wrote:
> H all,
>
> consider the folowing please
>
> A network is created and used
>
>                        privateNetwork =
> _networkMgr.createGuestNetwork(ntwkOffFinal.getId(), networkName,
> displayText, gateway, cidr, uriString, null, owner, null, pNtwk,
>                                 pNtwk.getDataCenterId(),
> ACLType.Account, null, vpcId, null, null, true, null);
>             s_logger.debug("Created private network " + privateNetwork);
>
> the next line[3987] in the logic is (there is an else block in between):
>         PrivateIpVO privateIp =
> _privateIpDao.findByIpAndSourceNetworkIdAndVpcId(privateNetwork.getId(),
> startIp, vpcId);
>
> the sequence logs as follows:
>
> log succes return of npe
> log the roll back
> log an npe on the object just returned and logged
>
> 2014-04-30 21:38:37,417 DEBUG [c.c.n.NetworkServiceImpl]
> (catalina-exec-17:ctx-d1365378 ctx-664fada1 ctx-e0adfbee) Created
> private network Ntwk[cf4d60e1-9d4a-46de-85bc-910a6ea44024|Guest|5]
> 2014-04-30 21:38:37,433 DEBUG [c.c.u.d.T.Transaction]
> (catalina-exec-17:ctx-d1365378 ctx-664fada1 ctx-e0adfbee) Rolling back
> the transaction: Time = 209 Name = catalina-exec-17; called by
> -TransactionLegacy.rollback:903-TransactionLegacy.removeUpTo:846-TransactionLegacy.close:670-Transaction.execute:41-NetworkServiceImpl.createPrivateNetwork:3964-NativeMethodAccessorImpl.invoke0:-2-NativeMethodAccessorImpl.invoke:-1-DelegatingMethodAccessorImpl.invoke:-1-Method.invoke:-1-AopUtils.invokeJoinpointUsingReflection:317-ReflectiveMethodInvocation.invokeJoinpoint:183-ReflectiveMethodInvocation.proceed:150
> 2014-04-30 21:38:37,452 ERROR [c.c.a.ApiServer]
> (catalina-exec-17:ctx-d1365378 ctx-664fada1 ctx-e0adfbee) unhandled
> exception executing api command: [Ljava.lang.String;@1925edc3
> java.lang.NullPointerException
>     at 
> com.cloud.network.NetworkServiceImpl$11.doInTransaction(NetworkServiceImpl.java:3987)
> ...
>
> it can of course be the _privateIpDao but I am trusting spring and the
> class strucutre here. there is no logic between the two lines. so
> privateNetwork must be the null involved in the npe. It has just been
> logged and *after that* rolled back.
> So in parallel to the network object being successfully returned the
> transaction is being rolled back. What evil genius has been at work
> here??? Or how stupid am I?
>
> I am sure similar issues must have been discussed earlier. any
> pointers? How can/Should I make sure an object returned is indeed
> valid?
>
> thanks,
> --
> Daan



-- 
Daan

Reply via email to