> On Jan. 6, 2016, 5:31 a.m., Ajit Kumar wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java,
> >  line 838
> > <https://reviews.apache.org/r/41477/diff/3/?file=1183400#file1183400line838>
> >
> >     why clusterId is declared as Long instead of long?
> 
> Sid Wagle wrote:
>     It could technically be null. The clusterId management is pretty much 
> left upto the calling code, for Cluster object not persisted, the id could be 
> null and thereby a valid value, IMO.
> 
> Ajit Kumar wrote:
>     If this is null then get method will throw NullPointerException as it is 
> returning long instead of Long. You will also have to check all methods where 
> you are passing clusterId  to make sure it doesn't throw NullPointerException 
> while converting from Long to long.
> 
> Sid Wagle wrote:
>     Good point, I getter should return Long instead. Will make that change as 
> a separate commit.
> 
> Ajit Kumar wrote:
>     Please correct me if wrong. I looked at ClusterEntity and clusterId is 
> non-nullable. So it should never be null.

That is correct, the NonNullable only applies to the DB column be notnull, JPA 
makes sure of that. The value is autogenrated squence value that will become 
available after the entity becomes managed. The ClusterImpl.clusterId is a 
cached value of he id, hence the calling code need to make sure the 
ClusterEntity is persisted before creating instance of the Cluster. Ref: 
org.apache.ambari.server.state.cluster.ClustersImpl#addCluster

Note: I have reverted the refrence back to primitive typeref.


- Sid


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/41477/#review113015
-----------------------------------------------------------


On Jan. 6, 2016, 1:43 a.m., Sid Wagle wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/41477/
> -----------------------------------------------------------
> 
> (Updated Jan. 6, 2016, 1:43 a.m.)
> 
> 
> Review request for Ambari, Jonathan Hurley, Myroslav Papirkovskyy, Nate Cole, 
> and Sumit Mohanty.
> 
> 
> Bugs: AMBARI-14411
>     https://issues.apache.org/jira/browse/AMBARI-14411
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> *Preliminary patch*
> 
> Symptom:
> 
> {code}
> Local Exception Stack: 
> Exception [EclipseLink-6004] (Eclipse Persistence Services - 
> 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.QueryException
> Exception Description: The object 
> [org.apache.ambari.server.orm.entities.ClusterConfigEntity@3646b3a8], of 
> class [class org.apache.ambari.server.orm.entities.ClusterConfigEntity], with 
> identity hashcode (System.identityHashCode()) [364,075,546], 
> is not from this UnitOfWork object space, but the parent session's.  The 
> object was never registered in this UnitOfWork, 
> but read from the parent session and related to an object registered in the 
> UnitOfWork.  Ensure that you are correctly
> registering your objects.  If you are still having problems, you can use the 
> UnitOfWork.validateObjectSpace() method to 
> help debug where the error occurred.  For more information, see the manual or 
> FAQ.
>       at 
> org.eclipse.persistence.exceptions.QueryException.backupCloneIsOriginalFromParent(QueryException.java:298)
>       at 
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.getBackupClone(UnitOfWorkImpl.java:1995)
>       at 
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3976)
>       at 
> org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerExistingObject(UnitOfWorkImpl.java:3894)
>       at 
> org.eclipse.persistence.mappings.CollectionMapping.buildElementUnitOfWorkClone(CollectionMapping.java:308)
>       at 
> org.eclipse.persistence.mappings.CollectionMapping.buildElementClone(CollectionMapping.java:321)
>       at 
> org.eclipse.persistence.internal.queries.ContainerPolicy.addNextValueFromIteratorInto(ContainerPolicy.java:217)
> {code}
> 
> Likely Cause:
> Stale clusterEntity reference points to a detached entity which gets tried to 
> be merged, the Cascaded relationship throws the error on persist.
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
>  3358e8c 
>   
> ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
>  3998f1c 
> 
> Diff: https://reviews.apache.org/r/41477/diff/
> 
> 
> Testing
> -------
> 
> Unit testing in progress.
> 
> 
> Thanks,
> 
> Sid Wagle
> 
>

Reply via email to