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

Review request for Ambari, Nate Cole and Sid Wagle.


Bugs: AMBARI-6230
    https://issues.apache.org/jira/browse/AMBARI-6230


Repository: ambari


Description
-------

Regression caused by fix for  AMBARI-6173.

...

After creating the view POST, then i PUT to change props, like label, 
description, etc. Those changes cause an exception. Even with the exception 
happening, changes happen (I can see them after I use the REST api) but the 
changes are not persisted (they disappear after a ambari-server restart). 

{code}
{
  "status": 500,
  "message": "Exception [EclipseLink-7251] (Eclipse Persistence Services - 
2.4.0.v20120608-r11652): 
org.eclipse.persistence.exceptions.ValidationException\nException Description: 
The attribute [viewInstance] of class 
[org.apache.ambari.server.orm.entities.ViewInstancePropertyEntity] is mapped to 
a primary key column in the database. Updates are not allowed."
}
{code}

{code}
Caused by: Exception [EclipseLink-7251] (Eclipse Persistence Services - 
2.4.0.v20120608-r11652): org.eclipse.persistence.exceptions.ValidationException
Exception Description: The attribute [viewInstance] of class 
[org.apache.ambari.server.orm.entities.ViewInstancePropertyEntity] is mapped to 
a primary key column in the database. Updates are not allowed.
        at 
org.eclipse.persistence.exceptions.ValidationException.primaryKeyUpdateDisallowed(ValidationException.java:2458)
        at 
org.eclipse.persistence.mappings.OneToOneMapping.writeFromObjectIntoRowWithChangeRecord(OneToOneMapping.java:1891)
        at 
org.eclipse.persistence.internal.descriptors.ObjectBuilder.buildRowForUpdateWithChangeSet(ObjectBuilder.java:1378)
        at 
org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.updateObjectForWriteWithChangeSet(DatabaseQueryMechanism.java:1003)
        at 
org.eclipse.persistence.queries.UpdateObjectQuery.executeCommitWithChangeSet(UpdateObjectQuery.java:84)
        at 
org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:286)
        at 
org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
        at 
org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:852)
        at 
org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:751)
        at 
org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
        at 
org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2875)
        at 
org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1602)
        at 
org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1584)
        at 
org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1535)
        at 
org.eclipse.persistence.internal.sessions.CommitManager.commitChangedObjectsForClassWithChangeSet(CommitManager.java:265)
        at 
org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsForClassWithChangeSet(CommitManager.java:190)
        at 
org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:136)
        at 
org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:3914)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1419)
        at 
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitToDatabase(RepeatableWriteUnitOfWork.java:634)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1509)
        at 
org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:266)
        at 
org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1147)
        at 
org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:84)
        ... 91 more
{code}


Diffs
-----

  
ambari-server/src/main/java/org/apache/ambari/server/orm/entities/ViewInstanceEntity.java
 d7955a3 
  ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java 
068fff8 
  
ambari-server/src/test/java/org/apache/ambari/server/orm/entities/ViewInstanceEntityTest.java
 eeee73e 
  
ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java 
6927676 

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


Testing
-------

Manual testing scenario above.

Added new unit tests.  All tests pass ...

Results :

Tests run: 1567, Failures: 0, Errors: 0, Skipped: 7

...

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26:05.251s
[INFO] Finished at: Fri Jun 20 16:16:49 EDT 2014
[INFO] Final Memory: 36M/123M
[INFO] ------------------------------------------------------------------------


Thanks,

Tom Beerbower

Reply via email to