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

Ship it!


Ship It!

- Mahadev Konar


On July 2, 2015, 6:34 p.m., Tom Beerbower wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/36140/
> -----------------------------------------------------------
> 
> (Updated July 2, 2015, 6:34 p.m.)
> 
> 
> Review request for Ambari, John Speidel and Robert Nettleton.
> 
> 
> Bugs: AMBARI-12262
>     https://issues.apache.org/jira/browse/AMBARI-12262
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> 1. Provision a cluster with the attached blueprint. Ambari will create 2 
> config groups for HDFS and YARN besides the default one.
> 2. Install the ambari-agent on a new host and let it register to Ambari
> 3. Add the newly registered host to the cluster (POST 
> /clusters/${getClusterName()}/hosts)
> 4. Add the components from slave_1 host group to the new host
> 5. Try to add the new host to both HDFS:slave_1 and YARN:slave_1 host group
> 
> Stack trace ...
> 
> 
>     javax.persistence.PersistenceException: 
> java.util.ConcurrentModificationException
>       at 
> org.eclipse.persistence.internal.jpa.QueryImpl.executeUpdate(QueryImpl.java:308)
>       at 
> org.apache.ambari.server.orm.dao.DaoUtils.executeUpdate(DaoUtils.java:88)
>       at 
> org.apache.ambari.server.orm.dao.ConfigGroupConfigMappingDAO.removeAllByGroup(ConfigGroupConfigMappingDAO.java:96)
>       at 
> org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:60)
>       at 
> org.apache.ambari.server.state.configgroup.ConfigGroupImpl.persistConfigMapping(ConfigGroupImpl.java:403)
>     ...
>     Caused by: java.util.ConcurrentModificationException
>       at 
> java.util.IdentityHashMap$IdentityHashMapIterator.nextIndex(IdentityHashMap.java:734)
>       at java.util.IdentityHashMap$KeyIterator.next(IdentityHashMap.java:825)
>       at 
> org.eclipse.persistence.internal.sessions.CollectionChangeRecord.mergeRecord(CollectionChangeRecord.java:260)
>       at 
> org.eclipse.persistence.internal.sessions.ObjectChangeSet.mergeObjectChanges(ObjectChangeSet.java:740)
>       at 
> org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet.mergeObjectChanges(UnitOfWorkChangeSet.java:492)
>       at 
> org.eclipse.persistence.internal.sessions.UnitOfWorkChangeSet.mergeUnitOfWorkChangeSet(UnitOfWorkChangeSet.java:509)
>       at 
> org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.writeChanges(RepeatableWriteUnitOfWork.java:466)
>       at 
> org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:863)
>       at 
> org.eclipse.persistence.internal.jpa.QueryImpl.performPreQueryFlush(QueryImpl.java:963)
>       at 
> org.eclipse.persistence.internal.jpa.QueryImpl.executeUpdate(QueryImpl.java:296)
>     
> The ConfigGroupImpl code was doing a merge of the associated config group 
> entity at the begining of the @Transactional annotated saveIfPersisted() 
> method.  It seems to me that it serves no purpose, especially since the 
> entity is merged later in the transaction.  
> 
>     configGroupEntity = configGroupDAO.merge(configGroupEntity);
>     
> Removing that line seems to resolve the issue.  Also did a little refactoring 
> to remove a findById (to get the associated cluster entity) from the 
> transactional scope.
> 
> 
> Diffs
> -----
> 
>   
> ambari-server/src/main/java/org/apache/ambari/server/state/configgroup/ConfigGroupImpl.java
>  f347eb6 
> 
> Diff: https://reviews.apache.org/r/36140/diff/
> 
> 
> Testing
> -------
> 
> Manual tested with STR above.  Verified no CME and host successfully added.
> 
> mvn clean test
> 
> results pending
> 
> 
> Thanks,
> 
> Tom Beerbower
> 
>

Reply via email to