[
https://issues.apache.org/jira/browse/AMBARI-5871?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tom Beerbower updated AMBARI-5871:
----------------------------------
Fix Version/s: 1.6.1
> Views: Can't install new instance after deploying view instance
> ---------------------------------------------------------------
>
> Key: AMBARI-5871
> URL: https://issues.apache.org/jira/browse/AMBARI-5871
> Project: Ambari
> Issue Type: Bug
> Affects Versions: 1.6.0
> Reporter: Tom Beerbower
> Assignee: Tom Beerbower
> Fix For: 1.6.1
>
>
> 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).
--
This message was sent by Atlassian JIRA
(v6.2#6252)