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

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 

Diff: https://reviews.apache.org/r/42319/diff/


Testing
-------

I performed several upgrades and downgrades and only saw the problem once. 
After my changes, I haven't seen it since. I can artificially reproduce it by 
clearing the EM cache. Working on a test now that tries to capture this 
scenario since it's the silent-but-deadly type.


Thanks,

Jonathan Hurley

Reply via email to