> On Jan. 15, 2016, 12:35 p.m., Alejandro Fernandez wrote:
> > ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java,
> >  line 1115
> > <https://reviews.apache.org/r/42319/diff/2/?file=1198214#file1198214line1115>
> >
> >     How does this fix it if clusterEntity falls out of scope after this 
> > assignment?

This doesn't fix it; it's simply good practice. You can easily not assign the 
return value and move along happily. Then, in 2 weeks someone adds some new 
code which references clusterEntity but doesn't reference the updated managed 
entity.


- Jonathan


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


On Jan. 15, 2016, 10:30 a.m., Jonathan Hurley wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/42319/
> -----------------------------------------------------------
> 
> (Updated Jan. 15, 2016, 10:30 a.m.)
> 
> 
> Review request for Ambari, Alejandro Fernandez, Jayush Luniya, and Nate Cole.
> 
> 
> Bugs: AMBARI-14674
>     https://issues.apache.org/jira/browse/AMBARI-14674
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> RU HDP 2.2 to 2.4 downgrade results in:
> 
> {code}
> java.lang.IllegalArgumentException: Can not refresh not managed object: 
> org.apache.ambari.server.orm.entities.ClusterEntity@18126.
>       at 
> org.eclipse.persistence.internal.jpa.EntityManagerImpl.refresh(EntityManagerImpl.java:1024)
>       at 
> org.eclipse.persistence.internal.jpa.EntityManagerImpl.refresh(EntityManagerImpl.java:929)
>       at 
> org.apache.ambari.server.orm.dao.ClusterDAO.refresh(ClusterDAO.java:309)
>       at 
> org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:68)
>       at 
> org.apache.ambari.server.state.cluster.ClusterImpl.removeConfigurations(ClusterImpl.java:3216)
>       at 
> org.apache.ambari.server.serveraction.upgrades.FinalizeUpgradeAction.finalizeDowngrade(FinalizeUpgradeAction.java:314)
>     ...
> {code}
> 
> It seems like what's happening is that the ClusterEntity is being retrieved 
> outside of a JPA session. Although the ClusterDAO creates the session, it 
> also ends it, leaving the Entity detached. We should instead be refreshing 
> this Entity within the bounds of the Transaction.
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/orm/dao/ClusterDAO.java 
> 22bd8bb 
>   
> ambari-server/src/main/java/org/apache/ambari/server/state/cluster/ClusterImpl.java
>  3938e31 
>   
> ambari-server/src/main/java/org/apache/ambari/server/upgrade/UpgradeCatalog170.java
>  3d00c29 
>   
> ambari-server/src/test/java/org/apache/ambari/server/state/cluster/ClusterTest.java
>  d2ba396 
> 
> Diff: https://reviews.apache.org/r/42319/diff/
> 
> 
> Testing
> -------
> 
> mvn clean test
> 
> Tests run: 3747, Failures: 0, Errors: 0, Skipped: 27
> 
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] 
> ------------------------------------------------------------------------
> [INFO] Total time: 32:00 min
> [INFO] Finished at: 2016-01-15T10:21:35-05:00
> [INFO] Final Memory: 36M/1390M
> [INFO] 
> ------------------------------------------------------------------------
> 
> 
> Thanks,
> 
> Jonathan Hurley
> 
>

Reply via email to