ambari-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nate Cole" <nc...@hortonworks.com>
Subject Re: Review Request 21867: Views: Can't install new instance after deploying view instance
Date Fri, 23 May 2014 17:56:33 GMT

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

Ship it!


Ship It!

- Nate Cole


On May 23, 2014, 12:08 p.m., Tom Beerbower wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21867/
> -----------------------------------------------------------
> 
> (Updated May 23, 2014, 12:08 p.m.)
> 
> 
> Review request for Ambari, John Speidel, Nate Cole, and Sid Wagle.
> 
> 
> Bugs: AMBARI-5871
>     https://issues.apache.org/jira/browse/AMBARI-5871
> 
> 
> Repository: ambari
> 
> 
> Description
> -------
> 
> After setting up sevaral instances and restart ambari after every creating instance,
I'm starting to get this error:
> {noformat}
> The attribute [view] of class [org.apache.ambari.server.orm.entities.ViewInstanceEntity]
is mapped to a primary key column in the database. Updates are not allowed.
> {noformat}
> In logs after restarting server
> 
> Setting up one view, e.g. FILES (put jar to resources, restart ambari, create instance
through API, again restart) is ok.
> Then, if I want to install one another ambari view (e.g. PIG) I'm getting error on creating
instance (POST request to /api/v1/views/PIG/versions/0.1.0/instances/PIG_1 returns 500). In
logs I see this
> 
> {noformat}
> javax.persistence.RollbackException: java.lang.IllegalStateException: During synchronization
a new object was found through a relationship that was not marked cascade PERSIST: org.apache.ambari.server.orm.entities.ViewEntity@2260898b.
>         at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commitInternal(EntityTransactionImpl.java:102)
>         at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:63)
>         at org.apache.ambari.server.orm.AmbariJpaLocalTxnInterceptor.invoke(AmbariJpaLocalTxnInterceptor.java:91)
>         at org.apache.ambari.server.view.ViewRegistry.installViewInstance(ViewRegistry.java:351)
>         at org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider$1.invoke(ViewInstanceResourceProvider.java:289)
>         at org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider$1.invoke(ViewInstanceResourceProvider.java:286)
>         at org.apache.ambari.server.controller.internal.AbstractResourceProvider.createResources(AbstractResourceProvider.java:237)
>         at org.apache.ambari.server.controller.internal.ViewInstanceResourceProvider.createResources(ViewInstanceResourceProvider.java:107)
>         at org.apache.ambari.server.controller.internal.ClusterControllerImpl.createResources(ClusterControllerImpl.java:218)
>         at org.apache.ambari.server.api.services.persistence.PersistenceManagerImpl.create(PersistenceManagerImpl.java:75)
> ...
> {noformat}
> 
> I'm not getting error if I install FILES and PIG in one shot (create both instances without
restarting ambari after each one)
> 
> Steps to reproduce ...
> 
> 1) download files.jar
> 2) restart ambari
> 3) create instance for FILES
> 4) restart ambari (and ensure that all works)
> 5) download pig.jar
> 6) restart ambari
> 7) create instance for PIG (got error here)
> 
> The problem is that deployment of the views are not isolated from each other. So the
code reads the archives and builds up the registry for all of the views, then it persists
any views that aren't already persisted, then it deploys them all to the Jetty container.
There is a situation where all the view archives get read followed by a failure trying to
persist one of the views view. The failure causes the whole process of view deployment to
stop so none of the views get deployed to Jetty.
> 
> Inn this scenario, even though a view doesn't get persisted, it is in the view registry
which means that it shows up in the API. This means that the user can invoke the API to create
an instance but it fails because the view is only partially deployed (not in the DB).
> 
> 
> Diffs
> -----
> 
>   ambari-server/src/main/java/org/apache/ambari/server/view/ViewRegistry.java 3b16cca

>   ambari-server/src/test/java/org/apache/ambari/server/view/ViewRegistryTest.java 2a83abe

> 
> Diff: https://reviews.apache.org/r/21867/diff/
> 
> 
> Testing
> -------
> 
> Added new unit test. All tests pass ...
> 
> Results :
> 
> Tests run: 1623, Failures: 0, Errors: 0, Skipped: 13
> 
> 
> ...
> 
> [INFO] ------------------------------------------------------------------------
> [INFO] BUILD SUCCESS
> [INFO] ------------------------------------------------------------------------
> [INFO] Total time: 23:38.693s
> [INFO] Finished at: Fri May 23 11:53:09 EDT 2014
> [INFO] Final Memory: 36M/123M
> [INFO] ------------------------------------------------------------------------
> 
> 
> Thanks,
> 
> Tom Beerbower
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message